기초 실습 2 | Ansible 구성 파일, 옵션
1. 앤서블 코어가 실행될 때 참조하는 파일은 어떤 것들이 있나요?
1) /etc/ansible/ansible.cfg : 환경 설정 파일
앤서블의 실행 정보를 담고 있는 cfg 파일입니다. 490줄에 달하는 많은 정보가 담겨 있습니다.
- Ansible-Server
vi /etc/ansible/ansible.cfg

2) /etc/ansible/hosts : 앤서블이 접속하는 호스트들에 대한 정보
앤서블이 접속하는 호스트에 대한 정보를 담고 있는 호스트 파일입니다.
- Ansible-Server
vi /etc/ansible/hosts

지난 편에서 입력해 놓은 3개의 관리 노드의 IP가 들어가 있는 것을 볼 수 있습니다.
위의 예시와 비슷하도록 [nginx]를 하나 더 추가해줍니다.

방금 추가한 [nginx]라는 것은 이 호스트 파일을 가리킬 때 즉, 내부적으로 특정 그룹을 지칭할 때 사용하는 일종의 별칭과 같은 것입니다. 다음의 명령을 실행하면 관리 노드로 지정했던 3개의 노드에 대해서 ping 명령을 내리게 됩니다. 즉, [nginx]로 묶인 3개의 노드는 하나의 그룹이 되어, ansible nginx~ 라는 명령을 실행할 때 /etc/ansible/hosts에 등록된 [nginx] 안의 내용을 해석하여 3개의 관리 노드에 대해서만 명령을 내리게 되는 것입니다.
ansible nginx -m ping -k

2. 앤서블 실행시 옵션 값?
다음은 앞으로 유용하게 사용될 앤서블 실행시의 옵션에 대해 알아보겠습니다.
- -i (--inventory-file) : 적용될 호스트들에 대한 파일
- -m (--module-name) : 모듈을 선택할 수 있도록
- -k (--ask-pass) : 패스워드를 물어보도록 설정
- -K (--ask-become-pass) : 권리자로 권한 상승
- --list-hosts : 적용되는 호스트들을 확인
1) -i (--inventory-file)
-i 옵션은 특정 호스트(관리 노드)에 대해서만 명령을 실행하고 싶을 때 사용하는 옵션입니다.
test라는 파일을 생성하여 관리 노드 2개의 IP만 입력 후, test 파일에 대하여 ansible ping 명령을 실행하면 두개의 노드에 대해서만 ping이 실행됩니다. 즉, /etc/ansible/hosts 파일에 입력되어 있는 호스트 중에서 일부분만 실행하고 싶은 경우 -i 옵션과 파일 경로를 입력해주면 됩니다. test 파일은 홈 디렉토리 밑에 있기 때문에 test 대신 ~/test로 지정해도 동일하게 실행됩니다.
vi test -> 192.168.200.61 192.168.200.62 ansible all -i test -m ping -k

2) -m (--module-name)
-m 옵션은 모듈의 이름을 지정하는 옵션입니다.
ansible all -m ping -k
위 명령에서의 ping은 우리가 일반적으로 알고 있는 ping 192.168.200.61 로 사용한 명령어와는 다른 명령어입니다. 즉, 다른 개발자가 파이썬으로 ping을 효과적으로 짜 놓은 하나의 모듈입니다. 이 모듈은 외부에서 가져오는 것이 아니라 내장 모듈에서 직접 호출해서 실행합니다.
3) -k (--ask-pass)
-k 옵션은 패스워드를 요청하는 옵션입니다.
아래 명령에서 -k 옵션이 없다면 에러가 발생합니다. 그 이유는, 제어 노드와 관리 노드는 상호간에 SSH 키 인증을 하게 되어 있는데 키 인증을 하지 않는 키를 교환하는 작업까지는 아직 해주지 않았기 때문입니다. 이는 즉 SSH로 로그인할 때 암호가 필요하다는 이야기입니다.

4) -K (--ask-become-pass)
실습은 root 계정에서 root 계정으로 통신을 하고 있지만 user 계정이라면 특정 명령어는 관리자 권한을 획득해야만 실행되는 경우가 많습니다. -K 옵션은 이 때 user가 관리자 권한으로 상승하게 할 때 사용하는 옵션입니다.
ansible all -m ping -k -K
위 명령을 실행하면 SSH 패스워드를 입력하고, -K 옵션으로 인해 Sudo 패스워드를 물어봅니다. 이는 관리자 권한을 획득하겠다는 의입니다. 일반적으로는 SSH 패스워드와 동일하므로 enter 키를 누르면 실행됩니다.

5) --list-hosts
--list-hosts 옵션은 명령이 적용되는 호스트들의 목록을 보여줍니다. 명령을 실행하기 전에 어떤 호스트들이 영향을 받고, 영향 받는 호스트들의 영역을 미리 알고 싶을 때, 해당 옵션을 통해 미리 검증할 수 있습니다.
ansible all -m ping --list-hosts ansible all -i test -m ping --list-hosts

◆ ansible에는 굉장히 많은 옵션값들이 존재합니다. --help 옵션을 실행하면 다양한 옵션들을 확인할 수 있습니다.
ansible --help