Bo's Oracle Station

查看: 1877|回复: 0

ansible4-本地事实(顺便介绍动态清单)

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2020-12-9 22:07:24 | 显示全部楼层 |阅读模式
v3-4_srvgroup.yml:

  1. ---
  2. - name: Local Var
  3.   hosts: srvgroup
  4.   gather_facts: yes
  5.   tasks:
  6.   - name: file
  7.     file:
  8.       path: "/etc/ansible/facts.d"
  9.       state: directory

  10.   - name: Copy
  11.     copy:
  12.       src: v3.d/local.fact
  13.       dest: /etc/ansible/facts.d

  14.   - name: var
  15.     debug:
  16.       msg: |
  17.          "{{ ansible_facts['ansible_local'] }}".

复制代码
v3.d/local.fact
  1. [a]
  2. v1: 1
  3. v2: 2

复制代码


[student@workstation ansible]$ vim  v3-4_srvgroup.yml
[student@workstation ansible]$ ansible-playbook  v3-4_srvgroup.yml

PLAY [Local Var] *************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************
ok: [serverd]
ok: [serverc]
ok: [serverb]

TASK [file] ******************************************************************************************************************************************************
ok: [serverb]
ok: [serverc]
ok: [serverd]

TASK [Copy] ******************************************************************************************************************************************************
ok: [serverd]
ok: [serverb]
ok: [serverc]

TASK [var] *******************************************************************************************************************************************************
ok: [serverb] => {
    "msg": "\"{'local': {'a': {'v1': '1', 'v2': '2'}}}\".\n"
}
ok: [serverc] => {
    "msg": "\"{'local': {'a': {'v1': '1', 'v2': '2'}}}\".\n"
}
ok: [serverd] => {
    "msg": "\"{'local': {'a': {'v1': '1', 'v2': '2'}}}\".\n"
}

PLAY RECAP *******************************************************************************************************************************************************
serverb                    : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
serverc                    : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
serverd                    : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[student@workstation ansible]$

------------------------------------------------------------------------------------

  1. ---
  2. - name: Local Var
  3.   hosts: srvgroup
  4.   gather_facts: yes
  5.   tasks:
  6.   - name: file
  7.     file:
  8.       path: "/etc/ansible/facts.d"
  9.       state: directory

  10.   - name: Copy
  11.     copy:
  12.       src: v3.d/local.fact
  13.       dest: /etc/ansible/facts.d

  14.   - name: var
  15.     debug:
  16.       msg: |
  17.          "{{ ansible_local.local.a.v1 }}".
复制代码

--------------------------------------------------------------动态清单
inventory.py 要有可执行位:

  1. #!/usr/bin/env python3
  2. #coding = utf8
  3. import json
  4. import sys

  5. def group():
  6.     hosts = ['serverb','serverc','serverd']
  7.     group = 'srvgroup'
  8.     vars = {'ansible_ssh_port': 22, 'ansible_connection': 'ssh'}
  9.     hostdata = {group:{"hosts": hosts, "vars": vars}}
  10.     print(json.dumps(hostdata, indent=4))


  11. if len(sys.argv) == 2 and (sys.argv[1] == '--list'):
  12.     group()
  13. else:
  14.     print("Usage: %s --list or --host <hostname>" % sys.argv[0])
  15.     sys.exit(1)
复制代码
----------------------

[student@workstation ansible]$ ./inventory.py  --list
{
    "srvgroup": {
        "hosts": [
            "serverb",
            "serverc",
            "serverd"
        ],
        "vars": {
            "ansible_ssh_port": 22,
            "ansible_connection": "ssh"
        }
    }
}

----------------------------
  1. [student@workstation ansible]$ ansible-playbook  -i inventory.py  v3-4_srvgroup.yml
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-4-29 10:02 , Processed in 0.040956 second(s), 24 queries .

快速回复 返回顶部 返回列表