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 10:24

相關推薦

  • 10月18日作業–hash,history

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正。 1、使用ntpdate對時間進行同步,然后hwclock -w;并再建立Crontab每小時進行一次時間同步。 2 生產有一個數據同步腳本需要執行很長時間,怎樣做到無人值守,在管理工具退出的情況下,腳本依然能正常運行。 1、載光盤 2、進入/mnt/Packages 安裝共享screen…

    Linux干貨 2016-10-19
  • HAProxy實戰(一)

    實驗目的 測試基于haproxy的反代和負載均衡配置 測試keepalived高可用haproxy的效果 實驗要點 (1) 動靜分離discuzx,動靜都要基于負載均衡實現;(2) 進一步測試在haproxy和后端主機之間添加varnish緩存;(3) 給出拓撲設計;(4) haproxy的設定要求: (a) 啟動stats;(b) 自定義403、502和5…

    Linux干貨 2017-02-13
  • httpd配置

    1、Centos7系統下實現httpd-2.2的安裝,并分別實現prefork、worker、event等幾種工作方式

    2、簡述request報文請求方法和狀態響應碼

    3、詳細描述httpd虛擬主機、站點訪問控制、基于用戶的訪問控制、持久鏈接等應用配置實例

    Linux干貨 2018-02-05
  • 馬哥教育網絡第21期-第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@6 ~]# …

    Linux干貨 2016-08-29
  • linux 必須掌握的60個命令

    Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盤操作、文件存取、目錄操作、進程管理、文件權限設定等。所以,在Linux系統上工作離不開使用系統提供的命令。要想真正理解Linux系統, 就必須從Linux命令學起,通過基礎的命令學習可以進一步理解Linux系統。 不同Linux發行版的命令數量不一樣,但Linux發行版本最少的命令也有200…

    2017-09-05
  • Ansible Conditionals & Loops

     一、條件語句     條件判斷語句,就是根據某些變量的值來控制Ansible的執行流程??刂颇承┲鳈C執行某些操作與不執行某些操作。根據某些操作結果,判斷是否執行其它操作等等。     Ansible的條件判斷語句只有 when 語句,結合變量使用才能顯示出它的價值。when的用…

    Linux干貨 2015-11-21
欧美性久久久久