一、ansible playbook簡單使用
相當於是把模塊寫入到配置文件里面
vim /etc/ansible/test.yml //寫入如下內容:
--- - hosts: 127.0.0.1 remote_user: root tasks: - name: test_playbook shell: touch /tmp/test.txt
PS: 第一行是固定寫法,hosts指定對哪些主機進行操作,如果是多台可以用逗號分隔,也可以使用主機組,如testhost
user參數指定使用什么用戶登錄遠程機器
tasks指定一個任務,name為對任務的描述,執行過程中會打印出來,shell是ansible模塊名字,執行test.yml
ansible-playbook test.yml
二、playbook設置變量
vim /etc/ansible/create_user.yml //創建一個用戶:
--- - name: create_user hosts: 127.0.0.1 user: root gather_facts: false vars: - user: "test" tasks: - name: create user user: name="{{ user }}"
PS: name參數對該playbook做一個描述,可以省略;gather_facts參數指定在以下任務部分執行前,是否執行setup模塊獲取主機相關信息;vars參數,指定變量,這里指定一個user變量,值為test,值一定要用引號引住;
tasks里面的user為一個模塊,下面的name為user模塊的一個參數,增加的用戶名字調用了上面user變量的值。
三、playbook循環
vim /etc/ansible/while.yml //創建文件以及修改權限:
--- - hosts: 127.0.0.1 user: root gather_facts: false tasks: - name: touch files and change mode for files file: path=/tmp/{{ item }} state=touch mode=600 with_items: - 1.txt - 2.txt - 3.txt
PS: with_items為循環的對象
四、playbook中的條件判斷
vim /etc/ansible/when.yml //寫入如下內容:
--- - hosts: testhost user: root gather_facts: True tasks: - name: user when shell: touch /tmp/when.txt when: ansible_eno16777736.ipv4.address=="192.168.1.99"
PS: 只有滿足when里面的條件時,才會去執行shell里面的內容;ansible 127.0.0.1 -m setup可以查看所有facter信息,即when里面條件在這里面去設置。
五、playbook中的handlers(tasks滿足條件之后才執行)
vim /etc/ansible/handlers //寫入如下內容:
--- - name: handlers test hosts: 127.0.0.1 user: root tasks: - name: copy file copy: src=/etc/passwd dest=/tmp/aaa.txt notify: test handlers handlers: - name: test handlers shell: echo "1111" >> /tmp/aaa.txt
PS:只有當copy模塊真正執行后,才會去調用下面handlers相關操作,copy與notify的順序沒有關系;如果aaa.txt與passwd內容是一樣的,就不會去執行handlers里面的shell命令。適用於配置文件發生更改后重啟服務的操作。