ansible/Redhat Cert

RHC

infra 2021. 10. 11. 18:48

 

*ansible 의 inventory

<1>

정의: ansible에서 관리할 host의 모음을 의미함. 호스트명, 그룹명을 정의 & 호스트 또는 그룹에 적용되는 변수 설정 등등 추가로 정보 넣을 수 있음.

 

<2>

경로: 일반계정 /home/일반계정명/ansible/inventory

<3>

inventory 종류

 

(1)정적 인벤토리 : 단순하게 사용자가 직접 텍스트 파일로 정의함.

해당 파일은 ini 형식을 사용[default], yaml 형식도 사용은 가능함.

정적인벤토리의 경로 : /etc/ansible/hosts[default이지만 실제로는 사용하지 않고, 따로 만들어서 사용한다!!]

 


(2) 동적 인벤토리 :필요에 따라 외부 정보 provider를 사용해 스크립트나 기타 프로그램으로 인벤토리를 생성함.

 

 

 

1. install & configure ansible

 User sandy has been created on your control node.
Give her the appropriate permissions on the control node.
Install the necessary packages to run ansible on the control node.

Create a configuration file /home/sandy/ansible/ansible.cfg to meet the following requirements:

* The inventory file path is /home/sandy/ansible/inventory.
*Ansible should be able to manage 10 hosts at a single time.        //동시에 실행되는 수를 forks를 통해 사용한다=> at a single time=at the same time
*Ansible should connect to all managed nodes using the sandy user.

Create an inventory file for the following five nodes:

node1.example.com
node2.example.com
node3.example.com
node4.example.com
node5.example.com

configure these nodes to be in an inventory file where node1 is a member of group dev.
 node2 is a member of group test, node3 is a member of group proxy,
node4 and node 5 are members of group prod.
Also, prod is a member of group webservers.


Answer)



1.1 #yum install ansible

#mkdir -pv /home/sandy/ansible/roles

 

* /home/유저명/ansible/roles   :  playbook에서의 역할의 위치를 의미

vi /home/sandy/ansible/ansible.cfg


1.2
vi /home/sandy/ansible/ansible.cfg
[defaults]

remote_user=sandy
inventory=/home/sandy/ansible/inventory
roles_path=/home/sandy/ansible/roles:/usr/share/ansible/roles
host_key_checking=false
forks=10

 

1.제어노드에서 sandy라는 일반 유저명으로 관리host에 ssh 접속을 수행한다.

 

 

 

 

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

 

2.로그인을 완료했으면, ansible에서 명시한 task를 수행 할 때 root권한의 sudo를 사용하여 실행한다.

3-1.관리 host의 /etc/sudoers에서 sandy 일반 유저에 대해 패스워드 없이 sudo를 사용할 수 있도록 설정했다면 바로 task가 수행된다.

3-2.따로 sudoers의 설정을 하지 않았다면, sudo 명령어 실행시 sandy의 패스워드를 물어보게 됨.



1.3
답1)

 

vi /home/sandy/ansible/inventory
[dev]
node1.example.com
[test]
node2.example.com
[proxy]
node3.example.com
[prod]
node4.example.com
node5.example.com
[webservers:children]
prod

 

답2)

vi /home/sandy/ansible/inventory
[dev]
node1.example.com
[test]
node2.example.com
[proxy]
node3.example.com
[prod]
node4.example.com       //node
node5.example.com
[webservers:children]
prod

 

 

[해설] 호스트 또는 ip주소를 나열하며, 대괄호를 활용할때는

[그룹명]

해당 [그룹명] 아래에는 구성원을 표시함

 

[dev]  //개발 그룹을 의미하며,

리눅스 각 서버의 /etc/hosts의 내용에 의존된

 

* 중첩 그룹

그룹안의 그룹을 포함할 수 있으며, :children 접미사를 사용함

webservers 라는 그룹안의 prod 라는 그룹이 있다.

그러면 호스트는 다음과같이 2대를 의미한다.(  node4.example.com, node5.example.com )

 

 

'ansible > Redhat Cert' 카테고리의 다른 글

3.ansible-doc 설치 및 yum repo 구성 script  (0) 2021.11.04
2. ssh 활용 rhce8 테스트 중  (0) 2021.11.04