Cloud Engineering/Ansible

[Ansible] Ansible 설정 파일 ansible.cfg

minjiwoo 2023. 2. 27. 18:23
728x90

Ansible의 설정파일

Ansible의 설정파일은 ansible.cfg 에 적을 수 있다. 작동되는 방식에 대해 설정할 수 있다. 

그런데 Ansible은 설정파일의 우선순위에 따라서 적용되는 설정이 다르다. 즉, 우선순위가 높은 설정을 기준으로 설정된다. 

 

Ansible 설정파일의 우선순위

1. ANSIBLE_CONFIG 환경 변수 

2. 현재 디렉토리의 ansible.cfg

3. 홈 디렉토리의 ansible.cfg

4. /etc/ansible/ansible.cfg

 

예를 들어서 환경변수가 없으면 현재 디렉토리의 ansible.cfg가 실행될것이며, 현재 디렉토리에도 설정파일이 없으면 홈 디렉토리에 있는 설정 파일이 실행될 것이다. 아무것도 설정파일을 따로 만들지 않는 경우에는 /etc/ansible/ansible.cfg 에 있는 설정파일 값으로 실행된다. 

 

ansible.cfg 설정파일 예시 

[defaults]
inventory = ./new-inventory
remote_user = vagrant
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo 
become_user = root
become_ask_pass = false

     [defaults] :기본값 설정 내용

  • inventory : 사용할 인벤토리를 지정한다. 
  • remote_user : 원격접속 시 어떤 유저로 접속할 것인지 설정할 수 있다. ssh로 접속시에 반드시 계정명을 써주어야 한다. 
    ex) vagrant@192.168.56.11
    remote_user를 설정하지 않으면 기본값은 현재 사용자이다. 
  • ask_pass : 접속 시에 패스워드를 물을 지 설정한다. false로 설정했으므로 비밀번호를 묻지 않는다. 단, false로 설정 시에 OpenSSH key  기반 인증을 설정해 두어야 한다.

    [privilege_escalation] : 권한 상승을 허용할 것인지 설정하는 것이다.

  • become : true 로 설정하는 것은 권한 상승을 가능하도록 설정한다는 것이다. 설정하지 않으면 기본 값은  false이다. 
  • become_method : 권한 상승을 할 때 명령어를 설정할 수 있다. 보통은 sudo 로 설정한다. 
  •  become_user : 권한 상승 시에 어느 유저 권한으로 상승할 것인지 설정한다. 
  • become_ask_pass : 권한 상승 시에 패스워드를 물을 것인지 설정 여부이다. 그러나 이 설정을 false 값으로 넣어주기 위해서는 /etc/sudoers.d/vagrant에 계정명이 들어가 있어야 한다.  sudoers.d 는 sudo 명령을 사용할 수 있는 사용자들의 정보이다.
$ sudo cat /etc/sudoers.d/vagrant
vagrant ALL=(ALL) NOPASSWD:ALL

 

현재 위치에서 적용된 설정 확인 

$ ansible-config view

예시 

$ ansible-config view

[defaults]
inventory = ./new-inventory
remote_user = vagrant
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo 
become_user = root
become_ask_pass = false

참고로 적어준 인벤토리 파일은 현재 디렉토리에 있는 new-inventory로 설정해 주었다. 

vagrant@ansi-master1:~/work
$ ls
ansible.cfg  new-inventory
728x90