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]