ansible 学习记录(五) -- playbook 学习

Yaml

  • 编写结构
# key: values
name: "Ansible"
version: 2.4
python_version: 2.7
# list
module:
- "Network"
- "Linux Server"
- "Windows Server"
# 字典
plugins:
  action_plugin: true
  cache_plugin: true
  shell_plugin: true

PlayBook

  • playbook 编写
[root@master ~]# cat /home/ansible-study/inventory/playbook2.yaml
- hosts: slave
  name: play-test
  tasks:
  - name: check host connection
    ping:

在这里插入图片描述

  • 通过 playbook 进行 ping 操作
[root@master ~]# ansible-playbook /home/ansible-study/inventory/playbook2.yaml -i /home/ansible-study/inventory/inventory.ini --private-key=/root/.ssh/id_rsa

在这里插入图片描述

Debug 模块使用

---

- name: Hello World
  hosts: localhost

  tasks:
    - name: Hello World
      debug:
        msg: "Hello World"
  • ansible control host
[root@master ~]# ansible-playbook /home/ansible-study/playbook/helloworld.yml

在这里插入图片描述

  • 增加 verbosity 参数
---

- name: Hello World
  hosts: localhost

  tasks:
    - name: Hello World
      debug:
        msg: "Hello World"
        verbosity: 3
[root@master ~]# ansible-playbook /home/ansible-study/playbook/helloworld.yml

在这里插入图片描述

  • 开启 Debug 模式运行 – -vvv
[root@master ~]# ansible-playbook /home/ansible-study/playbook/helloworld.yml -vvv

在这里插入图片描述

playbook 中使用 variables

变量优先级:越排在后面,优先级越高

  • Playbook 编写
---

- name: Hello World
  hosts: localhost

  vars:
    greetings: "hello from vars"

  tasks:
    - name: Hello World debug
      debug:
        msg: "{{greetings}}"

在这里插入图片描述

  • 执行 playbook
[root@master ~]# ansible-playbook /home/ansible-study/variables/helloworld.yml

在这里插入图片描述

---

- name: Hello World
  hosts: localhost

  vars:
    greetings: "hello from playbook vars"
    demo:
      a:
        - a: 1
        - b: 2
      b: test
    
  tasks:
    - name: Hello World debug
      debug:
        msg: "{{demo}}"

在这里插入图片描述

[root@master ~]# ansible-playbook /home/ansible-study/variables/helloworld.yml

在这里插入图片描述

  • 配置文件提取
# vars/helloworld.yml
---

- name: Hello World
  hosts: localhost

  vars:
    greetings: "hello from playbook vars"
   
  vars_files:
    - "./vars_file/demo.yml"
    - "./vars_file/test.yml"
    
  tasks:
    - name: Hello World debug
      debug:
        msg: "{{greetings}}"
# vars/vars_file/demo.yml
greetings: "hello from vars_file -- demo.yml"
# vars/vars_file/test.yml
greetings: "hello from vars_file -- test.yml"

在这里插入图片描述

Loop 在 Playbook 中的使用

  • 单循环 – with_items
---

- name: Hello World
  hosts: localhost
  gather_facts: no

  vars:
    test:
    - test1
    - test2
    - test3
    - test4

  tasks:
  - name: Test Loop
    debug:
      msg: "{{item}}"
    with_items: "{{test}}" 		# 单循环 test

在这里插入图片描述

[root@master ~]# ansible-playbook /home/ansible-study/playbook/loop/loop.yml

在这里插入图片描述

  • 双层循环 – with_nested
---

- name: Hello World
  hosts: localhost
  gather_facts: no

  vars:
    test:
    - test1
    - test2
    - test3
    - test4

    demo:
    - demo1
    - demo2
    - demo3

  tasks:
  - name: Test Loop
    debug:
      msg: "{{ item[0] }}, {{ item[1] }}" 	# item[0] -- 外层循环, item[1] -- 内层循环
    with_nested: 							# 双循环
      - "{{ test }}"
      - "{{ demo }}"
[root@master ~]# ansible-playbook /home/ansible-study/playbook/loop/double_loop.yml 
 [WARNING]: Could not match supplied host pattern, ignoring: all

 [WARNING]: provided hosts list is empty, only localhost is available


PLAY [Hello World] ***********************************************************************************************************************************************************************************************************************************************************

TASK [Test Loop] *************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => (item=[u'test1', u'demo1']) => {
    "changed": false, 
    "item": [
        "test1", 
        "demo1"
    ], 
    "msg": "test1, demo1"
}
ok: [localhost] => (item=[u'test1', u'demo2']) => {
    "changed": false, 
    "item": [
        "test1", 
        "demo2"
    ], 
    "msg": "test1, demo2"
}
ok: [localhost] => (item=[u'test1', u'demo3']) => {
    "changed": false, 
    "item": [
        "test1", 
        "demo3"
    ], 
    "msg": "test1, demo3"
}
ok: [localhost] => (item=[u'test2', u'demo1']) => {
    "changed": false, 
    "item": [
        "test2", 
        "demo1"
    ], 
    "msg": "test2, demo1"
}
ok: [localhost] => (item=[u'test2', u'demo2']) => {
    "changed": false, 
    "item": [
        "test2", 
        "demo2"
    ], 
    "msg": "test2, demo2"
}
ok: [localhost] => (item=[u'test2', u'demo3']) => {
    "changed": false, 
    "item": [
        "test2", 
        "demo3"
    ], 
    "msg": "test2, demo3"
}
ok: [localhost] => (item=[u'test3', u'demo1']) => {
    "changed": false, 
    "item": [
        "test3", 
        "demo1"
    ], 
    "msg": "test3, demo1"
}
ok: [localhost] => (item=[u'test3', u'demo2']) => {
    "changed": false, 
    "item": [
        "test3", 
        "demo2"
    ], 
    "msg": "test3, demo2"
}
ok: [localhost] => (item=[u'test3', u'demo3']) => {
    "changed": false, 
    "item": [
        "test3", 
        "demo3"
    ], 
    "msg": "test3, demo3"
}
ok: [localhost] => (item=[u'test4', u'demo1']) => {
    "changed": false, 
    "item": [
        "test4", 
        "demo1"
    ], 
    "msg": "test4, demo1"
}
ok: [localhost] => (item=[u'test4', u'demo2']) => {
    "changed": false, 
    "item": [
        "test4", 
        "demo2"
    ], 
    "msg": "test4, demo2"
}
ok: [localhost] => (item=[u'test4', u'demo3']) => {
    "changed": false, 
    "item": [
        "test4", 
        "demo3"
    ], 
    "msg": "test4, demo3"
}

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0
# 使用 Python 编写
test = ['test1', 'test2', 'test3', 'test4']
demo = ['demo1', 'demo2', 'demo3']

for i in test:
    for j in demo:
        print (i,j)

在这里插入图片描述

  • 多层循环
---

- name: Hello World
  hosts: localhost
  gather_facts: no

  vars:
    test:
    - test1
    - test2
    - test3
    - test4

    demo:
    - demo1
    - demo2
    - demo3

    abc:
    - abc1
    - abc2

  tasks:
  - name: Test Loop
    debug:
      msg: "{{ item[0] }}, {{ item[1] }}, {{ item[2] }}"
    with_nested:
      - "{{ test }}"
      - "{{ demo }}"
      - "{{ abc }}"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值