2017-12-12 16 views
1

다른 호스트간에 전환하는 데 사용할 수있는 -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 각본을 킥오프 젠킨스를 사용하기 때문에, 나는 다음과 같은 뭔가를 기대했다 변수는?

답변

1

당신은 사용할 수 있습니다

extra vars@로 : --extra-vars @/etc/ansible/project/dev/vars.yml

또는

include_vars

:

- include_vars: "/etc/ansible/project/{{ some_env }}/vars.yml" 

사용자 환경에 따라 다른 변수를로드 할 수 있습니다.

+0

감사합니다 콘스탄틴, 당신은 항상 좋은 솔루션을 가지고 있습니다. 독자들에게 :'--extra-vars'를 사용하여 입력을 얻었으므로 젠킨스가'--extra-vars'를 사용하여'ansible-playbook' 명령을 호출 할 때'environment' 변수를 넣었습니다. , 주어진 환경을 사용자에게 주입합니다. 그런 다음, 처음 플레이 할 때 위의 그림과 같이'-include_vars'를 사용하므로 나머지 변수에 사용할 수 있습니다. –