1. 程式人生 > 其它 >ansible的劇本playbook

ansible的劇本playbook

ansible的劇本playbook,目的是寫ansible指令碼用的,遵循的是yaml規範,一般用來寫一些配置檔案

  playbook的建議:建議只有一個hosts,一個tasks

yaml有兩種資料結構:

  字典  K:V

  列表 [   ]

yaml寫列表到時候一般用-
比如:
    - libai
    - dufu
    - baijuyi
    - wanganshi
 上面的-寫出來的東西就是一個列表[libai,dufu,baijuyi,wanganshi]

yaml檔案示例

vi job.yaml #開啟並編寫job.yaml檔案

job.yaml的內容如下:
- hosts: web     #-表示建立一個列表,hosts:web表示建立一個字典,並指明對應的主機
  remote_user: root #表示使用playbook的使用者
  tasks:    #tasks裡面都是建立的任務
  - name: createuser   #name表示的是建立任務的註釋
    user: name=libai home=/opt/libai uid=4000  #user是ansible的user模組,
                                                   :後面的是user -a的“”裡面寫的內容      
 -name:copy_content
   copy:src='源目標地址' desc = “目標地址”  #這裡的copy也是ansible的copy模組 

playbook的使用格式

playbook使用的格式:

ansible-playbook [options] playbook.yml [playbook2 ...]
    ansible-playbook  引數  yaml檔案

options的引數
    -C, --check #白跑,執行但是不會有結果
    --list-hosts #列出符合的主機
    -f FORKS, --forks=FORKS #做併發,預設為5
    --syntax-check #檢查語法
    -k, --ask-pass #輸入密碼

playbook的傳參(五種方式)

job.yml檔案的格式:

- hosts: web
  tasks:
  - name: create{{user}}
    user: name={{user}}


傳參的第一種方式:
    使用的是-e引數
ansible-playbook -e user=libai job.yml


傳參的第二種方式
    使用的是更改ansible的hosts檔案,在分組的IP地址後面新增引數
[web]
192.168.226.[101:102] user=libai
192.168.226.104  user=dufu
執行是:ansible-playbook job.yml

傳參的第三張方式
    修改ansible的hosts檔案,裡面新增如下
[web:vars]  #[組名:vars]
user=libai
執行是:ansible-playbook job.yml

傳參的第四種方式
    通過編寫job.yml檔案來傳參
- hosts: web
  vars:
  - user: libai
  tasks:
  - name: create{{user}}
    user: name={{user}}
執行是:ansible-playbook job.yml

傳參的第五種方式
    通過編寫job.yml來傳參,需要安裝bc,yum install bc -y
- hosts: web
  tasks:
  - name: yum
    yum: name=bc
  - name: sum
    shell: echo 11+22|bc  #實現11+22
    register: user  #這裡是註冊
  - name: echo
    shell: echo {{user.stdout}} > /tmp/echo.txt 
  - name: create{{user.stdout}}
    user: name=libai{{user.stdout}}



注:傳參的優先順序
    -e > playbook > hosts