메뉴 닫기

Ansible Rocky Linux 8 설치 및 기본 명령어

  1. 서버 정보
  • 서버 사양

IwinV 가상 서버 환경에서 진행하였습니다.

CPU Mem Disk OS
4Core 8GB 50GB Rocky Linux 8
  • Network

– Master Agent 개념과 동일하지만 대부분 Ansible Server와 Node로 표현하고 있어 아래와 같이 설정하였습니다.

Node Name Host Name Private IP
Ansible-Server Ans-SRV 10.101.0.3
Ansible-Node1 Ans-N01 10.101.0.4
Ansible-Node2 Ans-N02 10.101.0.8

 

      2. 기본 설정

  • 방화벽 서비스 설정

– 테스트를 위해서 기본 방화벽 disable 후 진행하였지만 실제 ansible에 사용하실 용도라면 권유드리지 않습니다.

systemctl stop firewalld && systemctl disable firewalld

  • 패키지 업데이트

dnf update -y

  • 계정 일치화

– 사용할 root 계정을 일치화하여 생성해둡니다.

 

      3. Ansible Core 설치

  • Ansible Core란?

Ansible Core란 Ansible 동작에 필요한 최소한의 유틸이 포함된 패키지를 의미하며, Ansible 설치는 대체로 Ansible Core 설치를 뜻합니다.

  • Ansible Config Files

ansible.cfg : /etc/ansible/ansible.cfg 에 설치되며, 앤서블 실행 관련 옵션을 기재합니다.
hosts : /etc/ansible/hosts 에 설치되며, 앤서블 서버에 연결되는 노드들의 정보를 기재합니다.

 

  • 설치

dnf install -y ansible

– 설치가 정상적으로 완료되었다면 /usr/bin 하단에 ansible 관련 실행 명령어가 설치되어 있습니다.

 

      4. Node 연결

  • Ansible-Server 설정파일에 호스트 정보 추가

– 파일 위치 : /etc/ansible/hosts

vi /etc/ansible/hosts
## db-[99:101]-node.example.com // 해당 구문 밑에 추가
# 추가할 Node Server IP 한 개 당 한 줄씩 기재
10.101.0.4
10.101.0.8
  • Node Server known_hosts_key value 

– 이 과정에서 주의해야 할 점은 입력한 hosts 파일의 서버 갯수만큼 [yes]를 입력해야 한다는 점입니다.

ansible all -m ping

 

  • Ansible Server와 Node Server 간 통신 테스트

– 아래 그림처럼 출력되면 성공입니다.

ansible all -m ping -k

– all 옵션을 쓴다면 /etc/ansible/hosts 에 등록된 모든 Node Server를 목적지로 설정합니다. 

– host를 별도로 지정해도 무관하나 all 옵션을 제외한 채로 사용해야 합니다.

– 모든 Node 서버가 아니지만 공통점을 가진 특정한 Node 서버들을 목적지로 설정하려면 그룹으로 묶어서 사용할 수 있습니다.

  그룹 설정 시 [그룹명]을 상단에 기재하고 Node 서버 IP들을 입력하면 됩니다.

vi /etc/ansible/hosts
[Rocky8_Node] # 단 그룹 명은 띄어쓰기 불가
10.101.0.4
10.101.0.8

ansible Rocky8_Node -m ping -k

 

  • 별도의 Custom host 파일 생성

– 기본 host 등록 파일 위치가 아닌 직접 생성하여서 사용해도 괜찮습니다.

  단, ansible은 실행 시 자동으로 /etc/ansible/hosts 파일을 읽어들여 실행하기 때문에 별도의 파일을 작성했다면

  해당 파일을 커맨드 상에 -i 옵션과 함께 매번 기재하여 실행해야 합니다.

echo "10.101.0.4" > /etc/ansible/custom_hosts.lst
echo "10.101.0.8" >> /etc/ansible/custom_hosts.lst

# 파일 내 모든 노드를 목적지로 설정 시 (all과 동일)
ansible -i /etc/ansible/custom_hosts.lst -m ping -k
# 파일 내 특정 노드를 목적지로 설정 시
ansible -i /etc/ansible/custom_hosts.lst 특정_NODE_IP -m ping -k

 

      5. Ansible Option

  • 자주 사용되는 몇 개의 옵션

-i : (--inventory-file) 명령 커맨드 적용 노드 선택

① 별도의 호스트 등록 파일을 생성하여 사용하는 경우
② 별도의 호스트 등록 파일에서 특정 노드를 지정하는 경우

ex) ansible -i /etc/ansible/custom_hosts.lst 10.101.0.4 -m ping -k

 

-m : (--module-name) 사용 모듈 선택

모듈의 종류에는 많은 것들이 있지만 주로 ping, shell, user, yum 등 자주 사용되는 것들이 정해져 있습니다.

cisco 장비와 연동하여 사용하는 모듈도 있어 네트워크 장비의 모니터링도 가능합니다. 단, ansible 서버의 이더넷을 통해 모니터링하는 구조로 사용되므로 이 점을 인지하고 사용해야 합니다.

– ansible 모듈 참고 페이지 URL

 

-k : (--ask-pass) 암호 묻기 설정

비밀번호 인증을 사용하겠다는 의미로 Permission Denied 에러 발생을 막기 위해 붙여서 사용하는 것이 좋습니다.

 

-ㅣ : (--list-hosts) 적용 노드 확인 // 소문자 L

 

– help 커맨드로 모든 옵션 확인 시

ansible –help
usage: ansible [-h] [–version] [-v] [-b] [–become-method BECOME_METHOD] [–become-user BECOME_USER]
[-K | –become-password-file BECOME_PASSWORD_FILE] [-i INVENTORY] [–list-hosts] [-l SUBSET] [-P POLL_INTERVAL]
[-B SECONDS] [-o] [-t TREE] [–private-key PRIVATE_KEY_FILE] [-u REMOTE_USER] [-c CONNECTION] [-T TIMEOUT]
[–ssh-common-args SSH_COMMON_ARGS] [–sftp-extra-args SFTP_EXTRA_ARGS] [–scp-extra-args SCP_EXTRA_ARGS]
[–ssh-extra-args SSH_EXTRA_ARGS] [-k | –connection-password-file CONNECTION_PASSWORD_FILE] [-C] [–syntax-check]
[-D] [-e EXTRA_VARS] [–vault-id VAULT_IDS] [–ask-vault-password | –vault-password-file VAULT_PASSWORD_FILES]
[-f FORKS] [-M MODULE_PATH] [–playbook-dir BASEDIR] [–task-timeout TASK_TIMEOUT] [-a MODULE_ARGS] [-m MODULE_NAME]
pattern

Define and run a single task ‘playbook’ against a set of hosts

positional arguments:
pattern host pattern

options:
–ask-vault-password, –ask-vault-pass
ask for vault password
–become-password-file BECOME_PASSWORD_FILE, –become-pass-file BECOME_PASSWORD_FILE
Become password file
–connection-password-file CONNECTION_PASSWORD_FILE, –conn-pass-file CONNECTION_PASSWORD_FILE
Connection password file
–list-hosts outputs a list of matching hosts; does not execute anything else
–playbook-dir BASEDIR
Since this tool does not use playbooks, use this as a substitute playbook directory. This sets the relative
path for many features including roles/ group_vars/ etc.
–syntax-check perform a syntax check on the playbook, but do not execute it
–task-timeout TASK_TIMEOUT
set task timeout limit in seconds, must be positive integer.
–vault-id VAULT_IDS the vault identity to use
–vault-password-file VAULT_PASSWORD_FILES, –vault-pass-file VAULT_PASSWORD_FILES
vault password file
–version show program’s version number, config file location, configured module search path, module location,
executable location and exit
-B SECONDS, –background SECONDS
run asynchronously, failing after X seconds (default=N/A)
-C, –check don’t make any changes; instead, try to predict some of the changes that may occur
-D, –diff when changing (small) files and templates, show the differences in those files; works great with –check
-K, –ask-become-pass
ask for privilege escalation password
-M MODULE_PATH, –module-path MODULE_PATH
prepend colon-separated path(s) to module library (default={{ ANSIBLE_HOME ~
“/plugins/modules:/usr/share/ansible/plugins/modules” }})
-P POLL_INTERVAL, –poll POLL_INTERVAL
set the poll interval if using -B (default=15)
-a MODULE_ARGS, –args MODULE_ARGS
The action’s options in space separated k=v format: -a ‘opt1=val1 opt2=val2’ or a json string: -a ‘{“opt1”:
“val1”, “opt2”: “val2”}’
-e EXTRA_VARS, –extra-vars EXTRA_VARS
set additional variables as key=value or YAML/JSON, if filename prepend with @
-f FORKS, –forks FORKS
specify number of parallel processes to use (default=5)
-h, –help show this help message and exit
-i INVENTORY, –inventory INVENTORY, –inventory-file INVENTORY
specify inventory host path or comma separated host list. –inventory-file is deprecated
-k, –ask-pass ask for connection password
-l SUBSET, –limit SUBSET
further limit selected hosts to an additional pattern
-m MODULE_NAME, –module-name MODULE_NAME
Name of the action to execute (default=command)
-o, –one-line condense output
-t TREE, –tree TREE log output to this directory
-v, –verbose Causes Ansible to print more debug messages. Adding multiple -v will increase the verbosity, the builtin
plugins currently evaluate up to -vvvvvv. A reasonable level to start is -vvv, connection debugging might
require -vvvv.

Privilege Escalation Options:
control how and which user you become as on target hosts

–become-method BECOME_METHOD
privilege escalation method to use (default=sudo), use `ansible-doc -t become -l` to list valid choices.
–become-user BECOME_USER
run operations as this user (default=root)
-b, –become run operations with become (does not imply password prompting)

Connection Options:
control as whom and how to connect to hosts

–private-key PRIVATE_KEY_FILE, –key-file PRIVATE_KEY_FILE
use this file to authenticate the connection
–scp-extra-args SCP_EXTRA_ARGS
specify extra arguments to pass to scp only (e.g. -l)
–sftp-extra-args SFTP_EXTRA_ARGS
specify extra arguments to pass to sftp only (e.g. -f, -l)
–ssh-common-args SSH_COMMON_ARGS
specify common arguments to pass to sftp/scp/ssh (e.g. ProxyCommand)
–ssh-extra-args SSH_EXTRA_ARGS
specify extra arguments to pass to ssh only (e.g. -R)
-T TIMEOUT, –timeout TIMEOUT
override the connection timeout in seconds (default=10)
-c CONNECTION, –connection CONNECTION
connection type to use (default=smart)
-u REMOTE_USER, –user REMOTE_USER
connect as this user (default=None)

Some actions do not make sense in Ad-Hoc (include, meta, etc)

 

◆ Ansible 다른 글 더 보기 ◆

  • 앤서블이 무엇인가요?

자동화 프로그램 앤서블(ansible) 소개

  • 간단한 playbook 사례

Ansible 활용하여 Zabbix-agent 구축

Ansible – DB replication install, monitoring

 

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x