botang 发表于 2020-8-15 20:59:26

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]
查看完整版本: ANSIBLE16(template)