IT/LINUX

[Ansible]Control node 의 configuration

송시 2020. 6. 8. 20:56
728x90

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

 

728x90

'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