Add a simple command to dump Ansible configuration for one or more hosts

This commit is contained in:
Mark Goddard 2017-02-16 10:44:32 +00:00
parent cbd6fcc522
commit f066dd286c
2 changed files with 41 additions and 8 deletions

View File

@ -1,22 +1,37 @@
--- ---
- hosts: all # Variables:
gather_facts: "{{ gather_facts | default(False) }}" # - dump_path: Path to directory to store variable dumps (optional)
# - dump_facts: Whether to include gathered facts in the dump (optional)
# - dump_hosts: Group/host specifier for hosts to dump (optional)
# - dump_var_name: Name of the option to dump (optional)
- name: Dump configuration from one or more hosts
hosts: "{{ dump_hosts | default('all') }}"
gather_facts: "{{ dump_facts | default(False) }}"
vars: vars:
dump_config_path: /tmp/kayobe-dump-config dump_path: /tmp/kayobe-dump-config
tasks: tasks:
- name: Create configuration dump directory - name: Create configuration dump directory
file: file:
path: "{{ dump_config_path }}" path: "{{ dump_path }}"
state: directory state: directory
- name: Write host config to file - name: Write host config to file
local_action: local_action:
module: copy module: copy
content: "{{ hostvars[inventory_hostname] | to_nice_yaml }}" content: "{{ hostvars[inventory_hostname] | to_nice_yaml }}"
dest: "{{ dump_config_path }}/{{ inventory_hostname }}.yml" dest: "{{ dump_path }}/{{ inventory_hostname }}.yml"
when: "{{ dump_var_name is not defined }}"
- name: Write merged config to file - name: Write host variable to file
local_action: local_action:
module: copy module: copy
content: "{{ hostvars | merge_config | to_nice_yaml }}" content: "{{ hostvars[inventory_hostname][dump_var_name] | to_nice_yaml }}"
dest: "{{ dump_config_path }}/merged.yml dest: "{{ dump_path }}/{{ inventory_hostname }}.yml"
when: "{{ dump_var_name is defined }}"
# - name: Write merged config to file
# local_action:
# module: copy
# content: "{{ hostvars | merge_config | to_nice_yaml }}"
# dest: "{{ dump_path }}/merged.yml

18
kayobe-config-dump Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
dump_dir=$(mktemp -d)
# Execute the dump-config.yml playbook.
./kayobe-playbook \
ansible/dump-config.yml \
-e dump_path=${dump_dir} \
$@ \
> /dev/null
result=$?
if [[ $result -eq 0 ]]; then
cat ${dump_dir}/*.yml
fi
rm -rf ${dump_dir}
exit $result