사용자 도구

사이트 도구


build_deploy_management:ansible

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
build_deploy_management:ansible [2020/09/14 00:04]
kwon37xi [변수(var) 외부에 두고 include]
build_deploy_management:ansible [2020/12/16 21:55]
kwon37xi [ansible-pull]
줄 13: 줄 13:
   * ''become: yes'' 일 경우 ''sudo'' 로 명령을 실행한다.   * ''become: yes'' 일 경우 ''sudo'' 로 명령을 실행한다.
   * 이때, 비밀번호를 받는 다양한 방법이 존재할 수 있는데, 일단 ''ansible-playbook''에 ''%%--ask-become-pass%%'' 옵션을 주면 최초 시작시 비밀번호를 물어본다.   * 이때, 비밀번호를 받는 다양한 방법이 존재할 수 있는데, 일단 ''ansible-playbook''에 ''%%--ask-become-pass%%'' 옵션을 주면 최초 시작시 비밀번호를 물어본다.
 +  * 혹은 다음과 같이 ''ansible_become_pass'' 변수로 명령행에 지정할 수도 있다. (''user'' 생략가능) [[https://stackoverflow.com/questions/21870083/specify-sudo-password-for-ansible|Specify sudo password for Ansible]]
 +<code sh>
 +ansible-playbook playbook.yml ... --user=username \
 +   --extra-vars "ansible_become_pass=yourPassword"
 +</code>
 +  * 그런데,이 경우 비밀번호가 외부로 노출되므로 비밀번호를 ''read -s SUDO_PASSWORD'' 등으로 읽거나 환경변수에 지정하고서 다음과 같이 하면 명령 history 노출등에 방어가 된다.
 +<code sh>
 +ansible-playbook playbook.yml ... \
 +    --extra-vars="ansible_become_pass='{{ lookup('env', 'SUDO_PASSWORD') }}'"
 +</code>
 +  * [[linux:sudo|sudo]]
 +
 +===== become_user =====
 +  * 특정 사용자로 명령 실행하기. ''ansible-playbook'' 자체를 ''root'' 로 실행한다면 ''become'' 대신 ''become_user''를 사용해야 할듯.
  
  
줄 21: 줄 35:
 <code yml> <code yml>
 - name: playbook name - name: playbook name
-  hosts: 127.0.0.1+  hosts: localhost # 혹은 127.0.0.1 로도 작동했음.
   connection: local   connection: local
   tasks:   tasks:
줄 70: 줄 84:
 packer_version: 1.6.1 packer_version: 1.6.1
 ... ...
 +</code>
 +
 +===== playbook 을 윈해 환경변수 =====
 +  * playbook 실행시 적용될 환경변수 지정
 +  * https://stackoverflow.com/questions/27733511/how-to-set-linux-environment-variables-with-ansible
 +<code sh>
 +- hosts: all
 +  roles:
 +     - php
 +     - nginx
 +  environment:
 +    MY_ENV_VARIABLE: whatever_value
 +</code>
 +
 +===== 특정 Task 용 환경변수 =====
 +  * 다른 태스크에는 적용안됨.
 +<code sh>
 +  tasks:
 +    - name: Echo my_env_var
 +      shell: "echo $MY_ENV_VARIABLE"
 +      environment:
 +        MY_ENV_VARIABLE: whatever_value
 </code> </code>
  
줄 78: 줄 114:
   * [[https://linuxhint.com/manage_ubuntu_package_repositories_ppas_ansible/|Manage Ubuntu Package Repositories and PPAs Using Ansible – Linux Hint]]   * [[https://linuxhint.com/manage_ubuntu_package_repositories_ppas_ansible/|Manage Ubuntu Package Repositories and PPAs Using Ansible – Linux Hint]]
  
 +===== 특정 태스크 지정 =====
 +  * ''%%--start-at-task="태스크이름"%%'' : 해당 태스크 부터 실행
 +  * ''%%--step%%'' : 실행여부 질문
 +
 +===== retries =====
 +  * ''register'', ''until'', ''delay'' 와 함께 사용.
 +  * 현재의 ''retries'' 는 ''until''이 없으면 작동하지 않는다. ''until''에서 명백하게 성공 조건을 명시해야한다.
 +  * [[https://github.com/ansible/ansible/issues/20802|"retries" without "until": retry until success · Issue #20802]] : 성공시 자동으로 ''retries'' 종료 해달라는 이슈. PR 이 있으며, 머지될 가능성이 있음.
 +
 +===== ansible-pull =====
 +  * [[:git|git]] 리포지토리등에서 파일을 받아서 ansible-playbook 실행.
 +  * [[https://docs.ansible.com/ansible/latest/cli/ansible-pull.html|ansible-pull]]
 +  * [[https://medium.com/splunkuserdeveloperadministrator/using-ansible-pull-in-ansible-projects-ac04466643e8|Using Ansible Pull In Ansible Projects | by Vince Sesto | Splunk User Developer Administrator | Medium]]
 +  * 실행할 플레이북 파일명을 명시하지 않으면 기본적으로 저장소 최상위 디렉토리의 ''local.yml'' 파일을 실행한다.
 +
 +<code sh>
 +ansible-pull -U https://github.com/.../xxx.git
 +</code>
 ===== 참조 ===== ===== 참조 =====
 +  * [[https://www.youtube.com/playlist?list=PLT98CRl2KxKEUHie1m24-wkyHpEsa4Y70|Getting started with Ansible - YouTube]] : 매우 쉽게 Ansible 설명.
   * [[http://knight76.tistory.com/1977|ansible tomcat]]   * [[http://knight76.tistory.com/1977|ansible tomcat]]
   * [[http://brownbears.tistory.com/358|Ansible이란?]]   * [[http://brownbears.tistory.com/358|Ansible이란?]]
   * [[https://skyoo2003.github.io/post/2017/11/14/ansible-module-develop|Ansible Module 개발하기 - 📚 Devlog in the SKY 📚]]   * [[https://skyoo2003.github.io/post/2017/11/14/ansible-module-develop|Ansible Module 개발하기 - 📚 Devlog in the SKY 📚]]
   * [[http://theeye.pe.kr/archives/2597|Ansible Playbook 정리 | 아이군의 블로그]]   * [[http://theeye.pe.kr/archives/2597|Ansible Playbook 정리 | 아이군의 블로그]]
 +  * [[https://www.ansible.com/blog/ansible-tips-and-tricks-dealing-with-unreliable-connections-and-services|Ansible Tips and Tricks: Dealing with Unreliable Connections and Services]]