ansible을 사용하여 서버 클러스터를 만들고 싶습니다.
하나의 메인 플레이 북에는 하위 플레이 북이 포함되어 있습니다.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
playbook_commandserver.yml에서 aws에 명령 서버를 만듭니다. 그런 다음 set_fact
모듈을 사용 하여 명령 서버의 DNS 이름을 기억 하는 역할을 트리거합니다 .
- name: Get hostname of command server
shell: /usr/bin/host $(/usr/bin/curl -s http://ipecho.net/plain) | /usr/bin/awk '{print $5}' | /usr/bin/awk -F 'aws.com' '{print $1"aws.com"}'
register: cs
- name: Set hostname of command server as fact
set_fact: commandserver="{{ cs.stdout }}"
commandserver
사실은 아니지만 같은 작전에서, 같은 플레이에서 사용할 수 있습니다 .. 혼자하자 playbook_agent.yml
, 그이 포함됩니다, 이후. 그리고 그것은 바로 거기에 있으며, 그 명령 서버 사실에 액세스해야합니다.
그렇다면 전체 ansible-run에 유효한 하나의 설정 / 저장 변수는 어떻게됩니까?
나는 이것을 발견했다 : https : //.com/questions/26732241/ansible-save-registered-variable-to-file 그러나 나에게 이것은 못생긴 해킹처럼 보입니다.
이 문제에 대한 더 나은 해결책이 없습니까? 전체 실행에 유효한 변수를 설정하는 방법이 없습니까?