ansible-playbook
파일 내용에 변수를 설정하고 싶은데 ec2 모듈을 사용하고 있습니다. 현재 내가하고있는 방법은 다음과 같습니다.
- 파일 이름이있는 Var
cat
파일 에 대한 셸 작업- 의 결과를 사용하여
cat
ec2 모듈에 전달합니다.
내 플레이 북의 예시 콘텐츠.
vars:
amazon_linux_ami: "ami-fb8e9292"
user_data_file: "base-ami-userdata.sh"
tasks:
- name: user_data_contents
shell: cat {{ user_data_file }}
register: user_data_action
- name: launch ec2-instance
local_action:
...
user_data: "{{ user_data_action.stdout }}"
이 작업을 수행하는 훨씬 쉬운 방법이 있다고 가정하지만 Ansible 문서를 검색하는 동안 찾을 수 없습니다.
답변
답변
slurp 모듈을 사용하여 원격 호스트에서 파일을 가져올 수 있습니다 : (제안 해 주신 @mlissner에게 감사드립니다)
vars:
amazon_linux_ami: "ami-fb8e9292"
user_data_file: "base-ami-userdata.sh"
tasks:
- name: Load data
slurp:
src: "{{ user_data_file }}"
register: slurped_user_data
- name: Decode data and store as fact # You can skip this if you want to use the right hand side directly...
set_fact:
user_data: "{{ slurped_user_data.content | b64decode }}"