몇 가지 가능한 트릭
6826 단어 ansibleautomationdevopslinux
이 블로그 게시물에서는 Ansible에 대한 몇 가지 (기본) 요령을 공유합니다 😃
물리는 것을 예방할 수 있습니다 😷
변수를 사용할 때 인용
변수를 사용하지 않을 때는 다음과 같이 인용하거나 인용하지 않을 수 있습니다.
- name: Copy
copy:
src: foobar
dest: /tmp/foobar
또는 (따옴표 포함):
- name: Copy
copy:
src: "foobar"
dest: "/tmp/foobar"
그러나 변수를 사용하는 즉시 따옴표를 사용해야 합니다!
- name: Copy
copy:
src: "{{ filename }}"
dest: "/tmp/{{ filename }}"
모든 ansible 버전이 이에 대해 동일한 동작을 하는 것은 아닙니다! 최신 버전의 Ansible은 더 유연하지만 완전히 처리할 수는 없습니다(변수가 배치된 위치에 따라 다름).
자세한 내용은 YAML gotcha을 참조하세요.
명령줄에서 추가 변수를 전달할 때 추가 인용 부호
--extra-vars
(또는 -e
)를 사용하여 명령줄에서 변수를 전달할 때 공백을 보호하기 위해 추가 따옴표를 추가해야 합니다. # here v and here v
$ ansible-playbook playbook.yml -e 'protectme="foo bar"'
# to protect this ^
쉬 잡았다
이것은 깨졌습니다:
---
- hosts: servers
tasks:
- name: Broken
shell: '[[ -z "" ]] && true'
왜요?
/bin/sh
에 의해 실행되기 때문에 ... bash
가 아닙니다!다음과 같이
sh
호환 버전으로 변환할 수 있습니다.---
- hosts: servers
tasks:
- name: Working
shell: 'test -z "" && true'
또는
args
에서 실행 파일을 지정합니다.--------
- hosts: servers
tasks:
- name: Broken
shell: '[[ -z "" ]] && true'
args:
executable: /bin/bash
변수의 우선 순위
일부는 분명하지만 전부는 아닙니다 😁
여기 내 알림이 있습니다.
-e variable="foo"
가 재정의됨...roles/common/vars/main.yml
)... playbook.yml
) 다음보다 우선 순위가... roles/common/default/main.yml
) 자세한 내용은 complete list of precedence에 대한 공식 문서를 확인하십시오.
초기화 후 변수 편집
모듈set fact로 이 작업을 수행할 수 있습니다!
- name:
set_fact:
var1: "new value"
결론
그게 트릭의 전부입니다.
행복한 프로비저닝! 😃
Reference
이 문제에 관하여(몇 가지 가능한 트릭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thibaultduponchelle/some-basic-ansible-tricks-4igm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)