다른 호스트간에 전환하는 데 사용할 수있는 -i
플래그를 사용하여 다른 인벤토리 파일간에 변경할 수 있음을 알고 있습니다.여러 환경 배포
내 경우에는 배포 사이에 변경 될 호스트가 있으므로 --extra-vars
으로 호스트를 가져와 해당 호스트에 배포하려면 delegate_to
을 사용하십시오 (자세한 내용은 아래 참조).
비슷한 방식으로 환경 변수를 포함하는 파일간에 전환하는 방법이 필요했습니다.
이/etc/ansible/
├── ansible.cfg
├── hosts
└── project/
└── environments/
├── dev/
│ └── vars.yml
└── prd/
└── vars.yml
두 환경에서 vars.yml
의 구조는 단지 변수가 환경의 차이로 인해 서로 다른 값을 갖는, 정확히 같은 것이다 : 예를 들어, 나는 다음과 같은 간단한 디렉토리 구조를 갖고 있다고 할 수 있습니다.
나는 이와 같은 비슷한 일을 이야기 몇 군데 발견했습니다
https://rock-it.pl/managing-multiple-environments-with-ansible-best-practices/
http://rosstuck.com/multistage-environments-with-ansible
http://www.geedew.com/setting-up-ansible-for-multiple-environment-deployments/
을 그 가이드에서를, 그들은 정적 호스트 선언에 대한 행동 . 나를 도울 수있는 한 가지는 group_vars
이라는 디렉토리 인 것 같습니다. 인벤토리가 동일한 이름을 가진 구성을 가리키는 것처럼 보이고 재생의 지시문에 인벤토리 헤더에 지정된 호스트가 포함되어있는 경우 해당 변수를 사용한다고 가정합니다.
...
hosts: localhost
tasks:
...
- name: do something
...
delegate_to: {{ item }}
with_items: {{ given_hosts }}
: 나는 동적으로 우리가 CLI 플래그
--extra-vars
을 통해에 대해 행동하고있는 서버에서 읽은 이후로 난 항상 내 연극이 같은 것을 가지고 있기 때문에
하지만, 그 접근 방식을 취할 수 없습니다 동적으로 생성 된 그룹
- name: Extract Hosts
hosts: localhost
tasks:
- name: Adding given hosts to new group...
add_host:
name: "{{ item }}"
groups: some_group
with_items:
- "{{ list_of_hosts | default([]) }}"
을 한 후 사용합니다 :
,195을가 아니면 서버를 받아이 같은 새 호스트에 추가 먼저 작업을 실행
그래서 vars.yml
을 지정하는 방법을 찾아야합니다. 내가 명시 적으로 사용하는 각본에 vars.yml
파일을 포함 할 방법은 적어도
ansible-playbook /path/to/some/playbook.yml --include-vars /etc/ansible/project/dev/vars.yml
: 나는 SSH를 통해 CLI를 통해 Ansible 각본을 킥오프 젠킨스를 사용하기 때문에, 나는 다음과 같은 뭔가를 기대했다 변수는?
감사합니다 콘스탄틴, 당신은 항상 좋은 솔루션을 가지고 있습니다. 독자들에게 :'--extra-vars'를 사용하여 입력을 얻었으므로 젠킨스가'--extra-vars'를 사용하여'ansible-playbook' 명령을 호출 할 때'environment' 변수를 넣었습니다. , 주어진 환경을 사용자에게 주입합니다. 그런 다음, 처음 플레이 할 때 위의 그림과 같이'-include_vars'를 사용하므로 나머지 변수에 사용할 수 있습니다. –