ansible playbook基本操作


一、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命令。適用於配置文件發生更改后重啟服務的操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM