728x90
소개
이 매뉴얼은 온프레미스 Ubuntu 24.04 서버에서 Ansible을 설정하고 사용자 생성, SSH 구성 수정, 타겟 호스트 연결 등 기본 작업을 수행하는 방법을 안내합니다. 아래 단계를 따라 Ansible 환경을 구축하세요.
1. Ansible 설치
# pip3 install setuptools wheel
# pip3 install --upgrade pip
# pip3 install ansible
2. 주요 개념
Control Node
- Ansible CLI를 실행할 머신
Managed Node
- Ansible로 관리를 진행할 타겟 호스트
Inventory
- 관리할 호스트 목록(개별, 그룹, 중첩된 그룹)
- INI, YAML 형식 사용 가능
- 기본 인벤토리 파일 경로: /etc/ansible/hosts
- 동적 인벤토리:
- 클라우드 가상 머신의 메타데이터를 기반으로 인벤토리 구성 가능
Playbooks
- 실행할 작업 목록을 관리
- 실행할 작업은 **플레이(Play)**로 구성
Modules
- Ansible에서 사용하는 명령어 집합
- 제공된 모듈 외에도 커스텀 스크립트나 모듈 생성 가능
Roles
- 재사용 가능한 형태의 Ansible 자원
- 태스크, 핸들러, 변수, 플러그인, 템플릿, 파일 구성
- 프로젝트 크기가 커질 경우 필수 사용
- 디렉터리 용도:
- tasks: 실행할 태스크 목록 관리
- templates: Jinja2 템플릿 파일 관리
- defaults: 변수의 기본 값 관리
- vars: 롤에 사용되는 변수 관리, 기본 변수 재정의 가능
- files: 리모트 서버에 배포할 데이터 파일
- Roles는 Playbook을 통해 호출되며, 각 롤의 하위 디렉토리 main.yml이 실행됨
3. 작업 디렉토리 생성
# mkdir ansible_demo
# cd ansible_demo
4. SSH 키 생성
- ansible_key: 개인 키
- ansible_key.pub: 공개 키
# ssh-keygen -C "ansible ssh key" -q -f ./ansible_key -t rsa -b 2048 -N ""
5. 클라우드 초기화 파일 설정(Cloud-Config 템플릿)
# cloud-config
------------------------------------------
cloud_final_modules:
- [users-groups, once]
users:
- name: ansible
groups: [ sudo, adm ]
sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
shell: /bin/bash
ssh_authorized_keys:
- PublicKeypair
6. 인벤토리 파일 구성
- 파일 이름은 반드시 aws_ec2.yaml로 끝나야 합니다.
# vim target_aws_ec2.yaml
------------------------------------------
plugin: aws_ec2
filters:
instance-state-name: running
keyed_groups:
- prefix: tag
key: tags
7. Ansible 설정 파일 구성
# vim ansible.cfg
------------------------------------------
[defaults]
inventory = /home/ubuntu/ansible_demo/target_aws_ec2.yaml
remote_user = ansible
private_key_file = /home/ubuntu/ansible_demo/ansible_key
host_key_checking = False
8. 타겟 호스트 연결 확인
# ansible-inventory --graph
# ansible all -m ping
9. 플레이북 작성 및 실행
# vim user_mgmt.yaml
------------------------------------------
- name: user module demo
hosts: tag_Name_ansible_demo
become: true
tasks:
- name: Create a new user
ansible.builtin.user:
name: fast
password: "{{ '1234qwer' | password_hash('sha512') }}"
groups:
- adm
- sudo
state: "present"
shell: "/bin/bash"
system: false
create_home: true
home: "/home/fast"
comment: "Ansible demo user"
- name: Enable SSH password authentication
ansible.builtin.lineinfile:
path: /etc/ssh/sshd_config
regexp: '^PasswordAuthentication'
line: PasswordAuthentication yes
- name: Restart sshd service
ansible.builtin.service:
name: sshd
state: restarted
# ansible-playbook user_mgmt.yaml
10. SSH 연결 테스트
# ssh root@<target_host_ip>
'DevOps' 카테고리의 다른 글
[Helm] Windows 환경에서 helm 설치하기 (0) | 2024.12.22 |
---|---|
[DevOps] HashiCorp (1) | 2024.12.13 |
[DevOps] Ubuntu24.04에 Jenkins 설치하기 (0) | 2024.12.10 |
[Ubuntu24.04]OpenLens 설치 (0) | 2024.12.03 |
[DevOps]인프라 자동화의 핵심 도구들: Terraform, cloud-init, Helm, Ansible, Vagrant (7) | 2024.11.09 |