Ansible系列命令用法詳解與使用

Ansible系列命令用法與使用

    在上一個文章中已經完成了Ansible的安裝,這片文章主要的用來記錄Ansible一些命令的用法詳解及其使用場景。好了非話不多說,‘上菜吧’。
    Ansible命令行執行方式有Ad-hoc、Ansible-playbook兩種方式。Web化執行方式其官方提供了付費產品Tower(10臺以內免費),個人的話可以基於API開發類似的Web化產品。此篇文章主要針對於Ad-hoc、Ansible-playbook兩種方式做詳細介紹。
    什麼是Ad-hoc、Ansible-playbook?Ad-hoc主要用於臨時命令的執行,而Ansible-playbook可以簡單理解爲Ad-hoc的集合,通過一定的規則編排在一起。兩者操作起來比較簡單、方便易懂。
    以下爲Ansible的部分命令:
  • ansible
  • ansible-galaxy
  • ansible-pull
  • ansib-doc
  • ansible-playbook
  • ansible-valut
  • ansible-console
    下面就是ansible、ansible-playbook、ansible-doc的詳解及其使用

    1.Ansible Inventory配置及詳解

    Inventory是Ansible管理主機信息的配置文件,存放於hosts文件中
      1. Inventory可以指定主機和組(如需端口直接在ip或者hostname後面+:port級即可)
        192.168.1.12 或者是hostname
        [haha]
        192.168.1.11
        192.168.1.10:8080
        [lala]
        web1
        pwd[1:10](指pwd1、pwd2.....pwd10)
    1. 2 定義主機變量
      [webservers]
      web1  http-port=8080
      1. 定義組變量
        [heihei]
        192.168.1.11
        192.168.1.10:8080
        [hah:vars]
        ansible_ssh_root=‘root’

        2.Ansible與正則

        正則匹配:Ansible支持正則表達式,但是開頭需要加上“~”纔可以
        All全量匹配:ansible all -m -a ‘ping’ OR ansible “*” -m -a ‘ping’ ansible 192.168.1.* -m -a ‘ping’
        邏輯或(or)匹配:指的是同時對多組或者多臺主機同時執行時,相互之間用“:(冒號)”分隔開:ansible web1:web2 -m ping
        邏輯非匹配:主要針對多重條件的匹配規則:(所有web組中的機器但是不在tom組中的主機):ansible web:!tom -m ping
        邏輯與的匹配:也是針對多重條件匹配的:(web跟tom組同時存在的主機):ansible web&tom -m ping
        多條件支持:在web和tom組中的所有機器存在於haha組中且在huhu組中不存在的主機:ansible web:tom&haha:!huhu
        模糊匹配: 所有以web開頭的主機:^web*
        域切割:

        [WEB]
        Luna
        Liuli
        Webo
        WEB[0]:代表:Luna

        正則匹配:Ansible支持正則表達式,但是開頭需要加上“~”纔可以
        *Ansible “~(haha|huhu|yiyi)”\.hehe\.(com.org) -m ping *
        檢測haha.hehe.com.org、huhu.hehe.com、yiyi.hehe.com、haha.hehe.org、huhu.hehe.org、yiyi.hehe.org的存在**

        3.ansible-doc

        ansible-doc是Ansible模塊文檔說明,針對每個模塊都會有詳細的用法說明以及應用案例介紹,功能。類似於Linux系統的man命令,使用方式如下:

        `ansible-doc [options] [module...]
        列出支出的模塊:
        `ansible-doc -l`
        模塊功能說明:
        `ansible-doc ping`

        4. Ad-Hoc命令集介紹

        Ansible <host-pattern> [options]
        常用選項:
        -v,--verbose:輸出更詳細的執行過程信息
        -i PATH,--inventory=PATH:指定inventory信息
        -f NUM,--fork NUM:指定線程數
        --private-key=PRIVATE_KEY_FILE:指定祕鑰文件
        -M DIRECTORY,--module-path=DIRECTORY:指定模塊存放路徑
        -a ’ARGUMECTORY’,--args=’ARGUMENTS’:模塊參數
        -k,--ask-pass SSH:認證密碼(通常在node機器上沒有做過免祕鑰的時候用)
        -K,--ask-sudo-pass sudo:用戶密碼(--sudo時用)
        -t DIRECTORY,--tree=DIRECTORY:輸出信息至DIRECTORY目錄下,結果文件以遠程主機名命名
        -t SECONDS,--timeout=SECONDS:指定遠程主機最大超時,單位是秒
        -u USERNAME,--username:指定遠程主機以username運行命令
        -l SUBSET,--limit=SUBSET:指定運行主機
        -l ~REGEX:指定運行主機(正則)
        --list-hosts:列出符合條件的主機列表,不執行任何命令
        ansible和ansible-playbook默認會fork5個線程併發執行命令此時可使用-k num,根據自己主機硬件配置做調整,建議併發數是CPU的偶數倍

        5. Ansible的模塊使用

        想要詳細瞭解Ansible的模塊信息通過ansible-doc [option] [module]即可
        例如ansible-doc -l:列出所有可用模塊
        ansible-doc yum:獲取yum模塊的help信息
        命令行模塊:command模塊
        文件傳輸模塊:copy模塊、fetch模塊、template模塊
        Copy模塊:複製本機文件到各節點上,可修改屬豬、屬組、權限(src=ansibefile dest=nodefile owner= greoup=groupname mode=777)
        copy模塊還可以實現備份功能:ansible all -m copy -a ‘src=file dest=file.bak backup=yes’
        Fetch模塊:複製節點文件傳輸到本機(僅支持傳輸文件,如果是個目錄的話可以歸檔壓縮後傳輸)
        Ansible all -m fetch -a ‘src=nodefile dest=ansiblefile backup=yes’
        ansible批量複製祕鑰到各節點並實現免祕鑰登錄
        ansible all -m copy -a ‘src=/root/.ssh/id_rsa.pub dest=/home/’
        ansible all -m shell -a ‘cat /home/id_rsa.pub >> /root/.ssh/au

        command模塊與shell模塊的區別2
        Shell功能全面但是執行率低
        command不支持:邏輯運算符、條件判斷符號、重定向命令或者是管道命令,但是使用shell模塊的就不會報錯
        cron模塊
        ansible srvs -m cron -a 'name="disk check loger" minute=15 hour=3 job="df -hT >> /tpm/df.log"
        Yum模塊
        安裝epel源:ansinle all -m yum -a ‘name=epel-release state=latest’
        安裝應用:ansible all -m yum -a ‘name=vsftpd state=latest’
        Service模塊
        Service模塊中的state支持的選擇有一下幾種:started、stopped、restarted、reloaded
        Ansible all -m service -a ‘name=vsftpd state=stop’
        Setup模塊
        自動從遠程主機獲取可用於playbook中的變量
        Ansible all -m setup -a ‘fileter=*distribut’ 或者是ansible all -m setup | grep -i distribut
        debug模塊
        此處暫時不用省略
        Script模塊
        Ansible all -m script -a ‘/home/test.sh’(在節點服務器上執行test.sh腳本)

        6. Ansible-playbook

        ansible-playbook是日常應用使用次數最多的,其工作機制是“讀取預先編寫好的playbook文件實現批量管理”,使用如下:
        ansible-playbook restartservice.yaml
        * 1)、子串不一定要用雙引號標識
        2)、在縮排中空白字符的數目並不重要,只要相同階層的元素左對齊就OK了(yaml裏面不可以使用Tab字符)
        3)、允許在文件中加入選擇性的空行,以增加可讀性;
        4)選擇性的符號“...”可以用來表示檔案結尾(在利用串流的通信中,這非常的有用,可以在選擇不關閉串流的情況下發送結束信號)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章