ANSIBLE16(template)
用debug模块来测试jinja2语法:ansible srvgroup -m debug -a "msg={{ 101 | random }}"
ansible srvgroup -m debug -a "msg={{ | min }}"
ansible srvgroup -m debug -a "msg={{ | zip(['a','b','c','d','e']) | list }}"
ansible srvgroup -m debug -a "msg={{ | zip(['a','b','c','d','e']) | list | to_nice_yaml }}"
ansiblelocalhost -m debug -a "msg={{ 'redhat' | password_hash('sha512')}}"
---
- name: Configure SOE
hosts: srvgroup
vars:
v_system_owner: zhang3@shendata.com
tasks:
- name: configure /etc/motd
template:
src: v8.d/motd.j2
dest: /etc/motd
owner: root
group: root
mode: 0644
动态清单文件:
#!/usr/bin/env python3
#coding = utf8
import json
import sys
def all():
info_dict = {
"all":[
"192.168.0.101",
"192.168.0.102",
"192.168.0.103",
"192.168.0.254"]
}
print(json.dumps(info_dict,indent=4))
def group1():
hosts1 = ['192.168.0.101','192.168.0.102']
group1 = 'webgroup'
vars = {'ansible_ssh_port': 22, 'ansible_connection': 'ssh'}
hostdata = {group1:{"hosts": hosts1, "vars": vars}}
print(json.dumps(hostdata, indent=4))
def group2():
hosts2 = ['192.168.0.102','192.168.0.103']
group2 = 'dbgroup'
vars = {'ansible_ssh_port': 22, 'ansible_connection': 'ssh'}
hostdata = {group2:{"hosts": hosts2, "vars": vars}}
print(json.dumps(hostdata, indent=4))
def group3():
hosts3 = ['192.168.0.102','192.168.0.254']
group3 = 'othergroup'
vars = {'ansible_ssh_port': 22, 'ansible_connection': 'ssh'}
hostdata = {group3:{"hosts": hosts3, "vars": vars}}
print(json.dumps(hostdata, indent=4))
def host(ip):
info_dict = {
"192.168.0.201": {},
"192.168.0.102": {},
"192.168.0.103": {},
"192.168.0.254": {}
}
print(json.dumps(info_dict,indent=4))
if len(sys.argv) == 2 and (sys.argv == '--list'):
group1()
elif len(sys.argv) == 3 and (sys.argv == '--host'):
host(sys.argv)
else:
print("Usage: %s --list or --host <hostname>" % sys.argv)
sys.exit(1)
ansible-inventory -i inventory.py--list
列出ansible默认的配置:
$ ansible-configdump
ACTION_WARNINGS(default) = True
AGNOSTIC_BECOME_PROMPT(default) = True
ALLOW_WORLD_READABLE_TMPFILES(default) = False
ANSIBLE_CONNECTION_PATH(default) = None
ANSIBLE_COW_PATH(default) = None
ANSIBLE_COW_SELECTION(default) = default
ANSIBLE_COW_WHITELIST(default) = ['bud-frogs', 'bunny', 'cheese', 'daemon', 'default', 'dragon', 'elephant-in-snake', 'elephant', 'eyes', 'he>
ANSIBLE_FORCE_COLOR(default) = False
ANSIBLE_NOCOLOR(default) = False
ANSIBLE_NOCOWS(default) = False
ANSIBLE_PIPELINING(default) = False
ANSIBLE_SSH_ARGS(default) = -C -o ControlMaster=auto -o ControlPersist=60s
ANSIBLE_SSH_CONTROL_PATH(default) = None
ANSIBLE_SSH_CONTROL_PATH_DIR(default) = ~/.ansible/cp
ANSIBLE_SSH_EXECUTABLE(default) = ssh
ANSIBLE_SSH_RETRIES(default) = 0
ANY_ERRORS_FATAL(default) = False
BECOME_ALLOW_SAME_USER(default) = False
BECOME_PLUGIN_PATH(default) = ['/home/student/.ansible/plugins/become', '/usr/share/ansible/plugins/become']
CACHE_PLUGIN(default) = memory
CACHE_PLUGIN_CONNECTION(default) = None
CACHE_PLUGIN_PREFIX(default) = ansible_facts
CACHE_PLUGIN_TIMEOUT(default) = 86400
COLLECTIONS_PATHS(default) = ['/home/student/.ansible/collections', '/usr/share/ansible/collections']
COLOR_CHANGED(default) = yellow
COLOR_CONSOLE_PROMPT(default) = white
COLOR_DEBUG(default) = dark gray
COLOR_DEPRECATE(default) = purple
COLOR_DIFF_ADD(default) = green
COLOR_DIFF_LINES(default) = cyan
COLOR_DIFF_REMOVE(default) = red
COLOR_ERROR(default) = red
COLOR_HIGHLIGHT(default) = white
COLOR_OK(default) = green
COLOR_SKIP(default) = cyan
COLOR_UNREACHABLE(default) = bright red
COLOR_VERBOSE(default) = blue
COLOR_WARN(default) = bright purple
COMMAND_WARNINGS(default) = True
CONDITIONAL_BARE_VARS(default) = True
CONNECTION_FACTS_MODULES(default) = {'eos': 'eos_facts', 'frr': 'frr_facts', 'ios': 'ios_facts', 'iosxr': 'iosxr_facts', 'junos': 'junos_fact>
DEFAULT_ACTION_PLUGIN_PATH(default) = ['/home/student/.ansible/plugins/action', '/usr/share/ansible/plugins/action']
DEFAULT_ALLOW_UNSAFE_LOOKUPS(default) = False
DEFAULT_ASK_PASS(default) = False
DEFAULT_ASK_SUDO_PASS(default) = False
DEFAULT_ASK_SU_PASS(default) = False
DEFAULT_ASK_VAULT_PASS(default) = False
DEFAULT_BECOME(/home/student/ansible/ansible.cfg) = True
$ ansible-configdump | grep FORK
DEFAULT_FORKS(default) = 5
$
控制每批执行几台机器:
---
- name: Serial
hosts: srvgroup
serial: 1
tasks:
- name: latest apache
yum:
name: bind
state: latest
notify: h_install
handlers:
- name: h_install
service:
name: named
state: restarted
要改并行度,请改配置文件:
页:
[1]