Centos7上安裝Ansible和基礎應用

Ansible

簡介

ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。這個工具的目標有這么幾項:自動化部署APP;自動化管理配置項;自動化的持續交互;自動化的(AWS)云服務管理。所有的這幾個目標從本質上來說都是在一個臺或者幾臺服務器上,執行一系列的命令而已。通俗的說就是批量的在遠程服務器上執行命令 。當然,最主要的是它是基于 paramiko 開發的。這個paramiko是什么呢?它是一個純Python實現的ssh協議庫。因此fabric和ansible還有一個共同點就是不需要在遠程主機上安裝client/agents,因為它們是基于ssh來和遠程主機通訊的。簡單歸納一下:

Ansible

—基于 Python paramiko 開發,分布式,無需客戶端,輕量級,配置語法使用 YMAL 及 Jinja2模板語言,更強的遠程命令執行操作

類似的自動化運維工具有很多常用的還有:

Puppet

—基于 Ruby 開發,采用 C/S 架構,擴展性強,基于 SSL,遠程命令執行相對較弱

SaltStack

—基于 Python 開發,采用 C/S 架構,相對 puppet 更輕量級,配置語法使用 YMAL,使得配置腳本更簡單

Ansible工作機制

Ansible 在管理節點將 Ansible 模塊通過 SSH 協議(或者 Kerberos、LDAP)推送到被管理端執行,執行完之后自動刪除,可以使用 SVN 等來管理自定義模塊及編排

ansible.png

由上面的圖可以看到 Ansible 的核心組件組成由 5 個部分組成:

    Ansible core:            核心;

    core Modules:          包括 Ansible 自帶的核心模塊及自定義模塊;

    connect Plugins:            完成模塊功能的補充,包括連接插件、郵件插件等;

    Playbooks:       網上很多翻譯為劇本,個人覺得理解為編排更為合理;定義 Ansible 多任務配置文件,由 Ansible 自動執行;

    host Inventory:         定義 Ansible 管理主機的清單、主機池、主機列表;

 

一、ansible安裝配置:

1、yum安裝ansible

        yum install ansible (ansible依賴于Python 2.6或更高的版本、paramiko、PyYAML及Jinja2。)

2、ansible的master/clinet認證方法:

    a、基于SSH密鑰認賬(默認認證)

        ssh-keygen -t rsa    ssh-copy-id -i /root/.ssh/id_rsa.pub  root@node1

    b、在inventory文件中制定用戶名和密碼認賬

        方法:vim /etc/ansible/hosts添加

                client_host ansibly_ssh_user=root ansible_ssh_pass=password

3、ansible配置hosts主機:

hosts.jpg

4、ansible命令應用基礎:    

    語法:ansible <host-pattern> [-f forks] [-m module_name] [-a args]
                -f啟動多個個主機執行任務 -m要使用的模塊 -a模塊特有的參數

 

二、ansible常用模塊:

1、command:命令模塊,默認模塊,用于在遠程執行命令,不支持變量。ansible 192.168.139.128 -a 'date'   

ansible-date.jpg

2、cron:計劃任務模塊:ansible 192.168.139.128 -m cron -a 'minute="*/10" job="/bin/echo "hell"" name="test job" '

cron.jpg

client-cron.jpg

3、user:用戶管理模塊:ansible webserver -m user -a 'name="node1" '

master-user.jpg

client-user.jpg

4、copy:遠程復制模塊

    a、復制文件至遠程主機:ansible webserver -m copy -a 'src=/etc/motd dest=/tmp/moth owner=root mode=640'

    master-copy.jpg

    b、往遠程主機文件寫入內容:使用content代替src。

        ansible webserver -m copy -a 'content="ansible test\n test" dest=/tmp/moth '

5、file:設置文件屬性模塊

    a、設置指定文件屬性:ansible webserver -m file -a 'owner=mysql group=mysql mode=644 path=/etc/motd'  

    file-master.jpg

    client-file-link.jpg

b、創建文件符號鏈接:ansible webserver -m file -a ' path=/tmp/motd.link src=/etc/motd state=link'

    file-link.jpg

    client-file-link.jpg

6、ping:測試指定主機網絡是否通訊:ansible webserver -m ping 

master-ping.jpg   

7、service:指定服務狀態模塊管理(必須保證遠程主機事先安裝好指定服務)

    enableed:是否開機自動啟動 true/false
     name:服務名稱
     start:狀態,取值為startd,stopd,restartd

ansible webserver -m service -a 'enabled=true name=httpd state=started'

httpd-service.jpg

8、shell模塊: 在遠程主機上運行命令,支持管道、變量等在使用復制命令時使用。

ansible webserver -m shell -a 'echo password |passwd –stdin node1' 

shell-master.jpg

9、script:將本地腳步復制到遠程主機上并運行(注意本地主機腳步路徑使用相對路勁)

ansible webserver -m script -a "test.sh"

master-script-shell.jpg10、yum:程序安裝
      name:指定要安裝的程序包,可以帶上版本號  state:preset,laster表示安裝最新,absent卸載

yum-master.jpgyum-client1.jpg

11、setup:收集遠程主機的facts ansible hostname -m setup

      每個被管理節點在接受并運行管理命令之前,會將自己主機相關信息,操作系統版本、ip地址等會報告給ansible主機
      用于將狀態報告給ansible主機直接調用其變量。

12、查看模塊幫助命令:
         ansible-doc -l  ansible-doc -s Modules 查看支持模塊

   感謝馬哥,每天進步一點點!  

原創文章,作者:n18-jude,如若轉載,請注明出處:http://www.www58058.com/14860

(2)
n18-juden18-jude
上一篇 2016-04-14 19:16
下一篇 2016-04-15

相關推薦

  • 安裝MariaDB

    1、安裝MariaDB 安裝命令 yum -y install mariadb mariadb-server安裝完成MariaDB,首先啟動MariaDB systemctl start mariadb設置開機啟動 systemctl enable mariadb接下來進行MariaDB的相關簡單配置 mysql_secure_installation首先是…

    Linux干貨 2017-08-08
  • 面授20-1班 0805課間練習與課后作業

    課間練習 第一階段 新學的命令文本命令cat tac rev more less head tail cut paste wc sort dif patch 1 、找出ifconfig 命令結果中本機的所有IPv4 地址 [root@IP70-CentOS7 ~]# >>ifconfig | tr&nbsp…

    Linux干貨 2016-08-07
  • 處理交換文件和分區

    處理交換文件和分區 交換分區是系統RAM的補充 ?  基本設置包括:  1 創建交換分區或者文件  2 使用mkswap寫入特殊簽名  3 在/etc/fstab文件中添加適當的條目  4 使用swapon -a 激活交換空間 掛載交換分區 ? 啟用:swapon swapon [OPTION]……

    Linux干貨 2016-09-01
  • Linux基礎指令(2)

    4.文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息?  元數據定義:      數據(Metadata),又稱中介數據、中繼數據,為描述 數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如…

    Linux干貨 2016-11-09
  • Hive深入淺出

    1.  Hive是什么 1) Hive是什么? 這里引用 Hive wiki 上的介紹: Hive is a data warehouse infrastructure built on top of Hadoop. It provides tools to enable easy data ETL, a mechanism to put stru…

    Linux干貨 2016-03-22
欧美性久久久久