botang 发表于 2020-12-9 22:07:24

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

v3-4_srvgroup.yml:

---
- name: Local Var
hosts: srvgroup
gather_facts: yes
tasks:
- name: file
    file:
      path: "/etc/ansible/facts.d"
      state: directory

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

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

v3.d/local.fact

v1: 1
v2: 2



$ vimv3-4_srvgroup.yml
$ ansible-playbookv3-4_srvgroup.yml

PLAY *************************************************************************************************************************************************

TASK *******************************************************************************************************************************************
ok:
ok:
ok:

TASK ******************************************************************************************************************************************************
ok:
ok:
ok:

TASK ******************************************************************************************************************************************************
ok:
ok:
ok:

TASK *******************************************************************************************************************************************************
ok: => {
    "msg": "\"{'local': {'a': {'v1': '1', 'v2': '2'}}}\".\n"
}
ok: => {
    "msg": "\"{'local': {'a': {'v1': '1', 'v2': '2'}}}\".\n"
}
ok: => {
    "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   

$

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

---
- name: Local Var
hosts: srvgroup
gather_facts: yes
tasks:
- name: file
    file:
      path: "/etc/ansible/facts.d"
      state: directory

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

- name: var
    debug:
      msg: |
         "{{ ansible_local.local.a.v1 }}".
--------------------------------------------------------------动态清单
inventory.py 要有可执行位:

#!/usr/bin/env python3
#coding = utf8
import json
import sys

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


if len(sys.argv) == 2 and (sys.argv == '--list'):
    group()
else:
    print("Usage: %s --list or --host <hostname>" % sys.argv)
    sys.exit(1)
----------------------

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

----------------------------
$ ansible-playbook-i inventory.pyv3-4_srvgroup.yml




页: [1]
查看完整版本: ansible4-本地事实(顺便介绍动态清单)