ansible自動化運維

ansible是基於python語言所開發出的一款輕量級的自動化運維軟件。python

ansible的優勢:基於ssh通訊,不須要在客戶端安裝任何插件,因此易於部署。                            注:搞個密鑰對,而後將公鑰傳到各個奴隸節點上就OK了。docker

                          具備豐富的操做模塊,也能夠本身用python編寫第三方模塊,因此他的擴展性高。shell

                          可編寫playbook來定製強大的需求,其實就是將多個命令寫到一個腳本內。運維

 

ansbile執行命令流程:1.加載本身的配置文件   2.查找主機清單中的主機或組   3.  加載使用的模塊文件   ssh

                                      4.生成python臨時腳本並傳送到各個奴隸節點上   5.文件加執行權限   6.執行腳本返回結果並刪除臨時腳本。            異步

ansible配置文件介紹:工具

inventory = /etc/ansible/hosts   指定清單文件目錄fetch

library = /usr/share/my_modules/    指定模塊的自定義目錄ui

module_utils = /usr/share/my_module_utils/   模塊的公用目錄spa

remote_tmp = ~./ansible/tmp     指定目標主機存放臨時腳本的地方

local_tmp = ~./ansible/tmp         指定本主機存放臨時腳本的地方

plugin_filters_cfg = /etc/ansible/plugin_filters.yml      過濾沒有的插件的配置文件

forks = 5     指定ansible執行時啓動多少個進程並行執行

poll_interval = 15  指定ansible異步執行的輪訓時間

sudo_user = root   指定sudo的用戶

remote_port = 22   默認的鏈接端口

 

ansible命令選項:

ansible-config dump 查看配置文件加載的環境變量。

ansible-doc -l:查看全部的模塊

ansible-doc -s 模塊名:獲取指定模塊的使用信息。

-m 模塊名:指定使用模塊。

-a:模塊的參數

-B:異步的超時時間

-e:添加變量

-k:輸入ssh密碼

-K:輸入sudo的用戶

-u:指定遠程的用戶

-i:指定清單文件路徑

-l:只運行那些主機

-C:檢測命令運行結果。

-f:指定並行執行任務的數量     注:默認爲5。

-T:指定ssh鏈接超時時間         注:默認爲10s

-o:將執行結果以一行來顯示。

-v -vv -vvv -vvvv:查看命令執行的詳細信息,v越多越詳細。

--list-hosts:查看主機組下的內容。

--version:顯示版本信息

--syntax-check:檢測playbook運行是否正常

ansible 清單變量搞一搞:

[test]
localhost ansible_connection=local      指定鏈接主機類型 local爲本主機    也能夠指定docker等等。

[play]
192.168.100.202 ansible_ssh_pass=123123 zcl=zcl 此變量權限最大。

[test2:children]     
test
play

[test2:vars]
zcl=nb       此變量權限第二大。

[all:vars]
zcl=hehe     此變量權限最小。

 

ansible經常使用模塊:

1.command模塊

ansible play -m command -a 'chdir /etc/ ls':切換到/etc/下執行命令。

ansible play -m command -a 'creates=/root/zcl.text ls':判斷文件若是存在則不執行命令。

ansible play -m command -a 'removet=/root/zcl.text ls':判斷文件若是不存在則不執行命令。

2.ping模塊

ansible play -m ping:檢測通訊

3.shell模塊

ansible play -m shell -a 'cat /etc/passwd |grep zcl':支持"|","<",">","&"

4.copy模塊

ansible play -m copy -a 'src=/root/zcl date=/data/': src指定本地文件  date指定copy到的路徑

ansible play -m copy -a 'content="zcl wudi1234\n" dest=/data/name mode=666':content指定文件內容  mode指定文件權限。

ansible play -m copy -a 'content="zcl 呵呵" backup=yes mode=666':backup修改文件並備份原有文件。

5.file模塊

ansible play -m file -a 'gruop=zcl mode=655 owne=zcl path=/data/ycq state=directory':group指定屬組   mode指定權限後能夠跟mode   owner指定屬主後必須跟path

注:state=directory:建立目錄     touch:建立文件   link:建立軟鏈接   hard:建立硬連接    absent:刪除目錄,文件,取消連接。

ansible play -m file -a 'path=/data/lfy state=directory':state狀態=directory:若是目錄不存在則建立目錄

ansible play -m file -a 'path=/data/aaa.text src=/data/xzj.text state=link':path指定建立的鏈接文件    src指定源文件    state=link:軟鏈接。

ansible play -m file -a 'path=/data/zcl state=absent':刪除zcl文件。absent:刪除

6.fetch模塊

ansible play -m fetch -a 'dest=/root/ src=/root/wudi.text':dest:指定文件拉取到的目錄      src:指定被拉取的文件。    fetch只能夠拉取文件不能夠拉取目錄。

7.cron模塊

(minute:分鐘)(hour:小時)(day:日)(month:月)(weekday:周)

name:計劃任務的描述           job:指定運行的命令        user:以哪一個用戶運行      state:指定狀態默認present添加計劃任務        absent刪除計劃任務    

ansible play -m cron -a 'name="查看負載狀況" minute=*/5 job="uptime"'     ####添加計劃任務

ansible play -m cron -a 'name="查看負載狀況" minute=*/5 job="uptime" state=absent'    ####刪除計劃任務

ansible play -m shell -a 'crontab -l'   ####查看計劃任務

8.yum模塊

(name:安裝包的名字)(state:present安裝     latest安裝最新     absent卸載)

ansible play -m yum -a 'name=elinks state=present':安裝elinks工具

9.service模塊

ansible play -m service -a 'name=httpd state=started enabled=true'  (state:started啓動 restarted重啓 stopped 關閉 reloaded重載)    enabled=true:開機自啓動

10.user模塊

comment:指定用戶描述信息        uid:指定用戶uid號       password:指定用戶密碼       name:指定建立用戶     state=absent 刪除用戶    home:指定用戶家目錄

ansible play -m user -a 'comment="ansible用戶" name=ansible uid=666 password=123123'

11.group模塊

gid:指定組gid號    name:指定組的名字    system=yes:表示建立爲系統組

ansible play -m group -a 'name=zcl gid=111 system=yes'

12.script模塊

ansible play -m script -a '/jiaobeng/a.sh'    將本地腳本推送到被管理主機執行腳本。

13.setup模塊

facts組件是Ansible用於採集被管機器設備信息的一個功能

facts就是變量,內建變量 。每一個主機的各類信息,cpu顆數、內存大小等。會存在facts中的某個變量中

ansible play -m setup -a 'filter="*mem*"' :查看內存

ansible play -m setup -a 'filter="*mem*"' --tree /root/facts

14.debug模塊

ansible play -m debug -a 'msg={{test}}'     輸出play內test變量的值。

ansible清單文件中直接指定IP和密碼進行鏈接。無需建立祕鑰對

應爲第一次鏈接要輸入yes因此在ansible.cfg文件將

#host_key_checking = False 將#號去掉便可          

[play]

play1 ansible_ssh_host=192.168.100.203 ansible_ssh_pass=123123

play2 ansible_ssh_host=192.168.100.204 ansible_ssh_pass=123123

相關文章
相關標籤/搜索