ansible Control(master) node 에서 config 설정
ansible --version
[ansibleuser@control ~]$ ansible --version
ansible 2.9.9
config file = None
configured module search path = ['/home/ansibleuser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules ']
ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
config file = None 이라는 것을 확인 할 수 있다.
기본적으로 /etc/ansible(pip로 설치시 mkdir 필요) 의 ansible.cfg를 찾는다.
다른 이름의 cfg 는 자동으로 불러오지 않음
[root@control ~]# ansible --version
ansible 2.9.9
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
[root@control ansible]# mv first.cfg ansible.cfg
[root@control ansible]# ansible --version
ansible 2.9.9
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
[root@control ansible]# cp ansible.cfg /home/ansibleuser
[root@control ansible]# chown ansibleuser /home/ansibleuser/ansible.cfg
[root@control ansible]# su - ansibleuser
Last login: Mon Jun 8 14:58:38 KST 2020 on pts/0
[ansibleuser@control ~]$ ansible --version
ansible 2.9.9
config file = /home/ansibleuser/ansible.cfg
configured module search path = ['/home/ansibleuser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
**ansible 공식 문서에서는 다음과 같이 나와 있다
The configuration file
Changes can be made and used in a configuration file which will be searched for in the following order:
ANSIBLE_CONFIG (environment variable if set)
ansible.cfg (in the current directory)
~/.ansible.cfg (in the home directory)
/etc/ansible/ansible.cfg
config 에서 자주 사용되는 옵션들에 대해서 알아보자
wget --no-check-certificate https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg
위를 통해 추가 옵션들을 공부해볼 수 있다.
cat ~/ansible.cfg
[defaults]
inventory = /etc/ansible/hosts
remote_user = ansibleuser
host_key_checking = false
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
====
컨트롤 노드에서 사용할 인벤토리 파일과
원격지에서 사용할 계정
ssh 연결시에 아래 처럼 yes/no 를 묻는 host_key 의 표시
The authenticity of host 'centos8-1 (192.168.21.222)' can't be established.
ECDSA key fingerprint is SHA256:IuOa3RUSyOF+vfLhrdq0YMXPBYG4WiR9bhqi6SguZ5k.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
ansibleuser 계정이 특별한 권한으로 실행을 시켜야 할때 사용하는 become 옵션들
이 옵션을 넣지 않는다면 playbook 이나, 명령어 옵션으로 넣어줘야 해당 권한의 명령어를 실행시킬때 오류가 안생긴다.
어쩌면 거의 대부분 root 를 become_user 로 사용하게 될 것 같다.
become 을 사용 할 때에 ask_pass 는 비밀번호를 묻는 설정
/etc/hosts의 파일에 우선 IP를 등록하고 inven 이라는 파일을 만들어 인벤토리를 구성했다.
[ansibleuser@control ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.21.222 centos8-1
[ansibleuser@control ~]$ cat inven
[ap]
centos8-1
ping module 을 사용하고 만들어 놓은 인벤토리를 사용했을 때 failed 이 발생하는 것을 알 수 있다.
[ansibleuser@control ~]$ ansible -m ping all -i inven
centos8-1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Warning: Permanently added 'centos8-1,192.168.21.222' (ECDSA) to the list of known hosts.\r\nansibleuser@centos8-1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).",
"unreachable": true
}
/home/ansibleuser/ansible.cfg 의 inventory 설정을 변경함으로서 더 간단하게 사용할 수 있게 된다.
[ansibleuser@control ~]$ grep inven ansible.cfg
inventory = ~/inven
위에도 알 수 있지만 명령어가 실패한 것을 알 수 있다. msg 를 통해서 알 수 있는 것은 ssh 접근을 못하고 있다는 것인데
ansible 은 기본적으로 ssh key change 에 의해 비밀번호 입력없이 사용 하는 자동화 도구다.
아직 ssh key 를 교환하지 않았기에 ssh 에 접근할때 권한 문제가 발생한다.
그렇다면 아에 방법이 없는가?
원격지의 계정과 비밀번호를 알고 있다면 실행 시킬 수 있다. -u 계정명 -k (ask-passwd) 비밀번호 입력
[ansibleuser@control ~]$ ansible ap -u root -k -m ping
'IT > LINUX' 카테고리의 다른 글
[Ansible] ad hoc (0) | 2020.06.12 |
---|---|
[Ansible] 원격지 계정 추가 및 sudo 권한 등록 (0) | 2020.06.08 |
[Ansible] 설치(control node) (0) | 2020.06.06 |
[Ansible]Centos8 에서 sshpass 설치하기 (0) | 2020.06.06 |
오븐스댁 환경 (0) | 2019.06.04 |