Настройка: Ansible инициализируется и запускается из контейнера докера. В этот контейнер загружено git-репо, содержащее книги с книгами и инвентарь.
Что делает playbook: Конкретный playbook, над которым я работаю, запускает простой findmnt на всех хостах, перечисленных в инвентаре, и записывает вывод в плоский текстовый файл, который я затем извлекаю.
Фактическая проблема: ANSIBLE контейнер не работает в отдельном режиме, и поэтому, когда запуск завершен, нет способа получить эти текстовые файлы результатов. Поскольку в контейнере находится git-репо, я попытался спрятать их в него, но команда снова выполняется на хостах-инвентаре, а не в контейнере, из которого работает Ansible. Я попробовал несколько методов, чтобы сделать то же самое, но не могу найти способ, чтобы ansible делал набор операций внутри контейнера, из которого он выполняется. Как мне справиться с этой ситуацией.
Playbook:
---
- name: get the nfs mounts reports
hosts: 2017_CI
become: true
vars :
nfs_results: "/tmp/{{ host_name }}.txt"
host_name: "{{ inventory_hostname }}"
tasks:
- name: "get the list of nfs mounts on {{ host_name }} "
#shell: 'findmnt -lo source,target,fstype,label,options,used -t nfs'
#AIX nfsstat -m
shell: 'mount -l -t nfs'
register: nfs_output
failed_when: "'FAILED' in nfs_output.stderr"
- name: Store the nfs report ouput file
copy:
content: "{{ nfs_output.stdout }}\n"
dest: "{{ nfs_results }}"
owner: root
group: root
mode: 0777
force: yes
register: nfs_results
- name: Fetching the output to ansible host
fetch:
src: "/tmp/{{ inventory_hostname }}.txt"
dest: "/tmp/"
flat: yes
- pause:
minutes: 2
- name: copying file with permissions
copy:
src: "/tmp/{{ inventory_hostname }}.txt"
dest: "/data/web/nfsmountInfo/"
owner: root
group: root
mode: 0777
# - name: Transfer file from ServerA to ServerB
# synchronize:
# src: "/tmp/{{ inventory_hostname }}.txt"
# dest: "/data/web/nfsmountInfo/"
# mode: push
# delegate_to: "localhost"
# become: yes
# become_user: root
# - pause:
# minutes: 1
# - name: git configuration fo email setup
# git_config:
# name: user.email
# scope: global
# value: 'xxxx@x.com'
# - name: git configuration fo email setup
# git_config:
# name: user.name
# scope: global
# value: 'myUser'
# - name: Add the files into staging workspace
# shell: git add .
# args:
# chdir: '/home/jenkins/workspace/TestPipelines/NFSTestAnsible/nfsmountInfo/'
# - name: Commit the changes
# shell: git commit -m "Update the nfsmount reports"
# args:
# chdir: '/home/jenkins/workspace/TestSaddamPipelines/NFSTestAnsible/nfsmountInfo/'
# - name: Set origin to include username and password.
# shell: "git remote set-url origin https://user@http://<gitServer>/inf-build-ansible.git"
# - name: Push to origin.
# shell: "git push origin nfs-mnt-testing"