virsh destroy rocky1
virsh destroy rocky2
virsh destroy rocky3
virsh destroy rocky4
virsh start rocky1
virsh start rocky2
virsh start rocky3
virsh start rocky4
Ansible Playbook은 자동화된 작업을 정의하는 파일로, 기본적인 Playbook 구조는 다음과 같습니다:
- name: 전체 작업명 > 로그에 표시됨
hosts: 대상 [all, 그룹이름, localhost]
become: yes # root 권한으로 작업을 처리 (sudo 대체)
gather_facts: yes # 대상의 정보를 수집 (default: yes)
tasks:
- name: 첫 번째 작업
yum: # 모듈 이름
name: httpd
state: present
- name: 두 번째 작업
yum:
name: git
state: present
변수를 사용하여 동적으로 값을 설정하고 작업을 관리할 수 있습니다.
[root@stg ansiblelab]# cat vartest.yml
- name: var test
hosts: localhost
gather_facts: true # 기본값
become: true
tasks:
- name: tes1
debug:
msg: "테스트 로그"
[root@stg ansiblelab]# cat vartest.yml
- name: var test
hosts: localhost
gather_facts: true # 기본값
become: true
vars:
myname: "홍길동"
tasks:
- name: tes1
debug:
msg: "테스트 로그"
- name: test2
debug:
msg: "패키지 매니저: {{ ansible_pkg_mgr }}, 배포판: {{ ansible_distribution }}"
- name: test3
debug:
msg: "나의 이름: {{ myname }}"
변수가 많을 경우, 별도의 파일로 관리하고 이를 Playbook에서 호출하여 사용할 수 있습니다. vars_files를 사용하여 변수 파일을 로드할 수 있습니다.
name1: "길동"
names:
- "영수"
- "광수"
- "영철"
[root@stg ansiblelab]# cat vartest.yml
- name: var test
hosts: localhost
gather_facts: true
become: true
vars_files:
- vars.yml
tasks:
- name: tes1
debug:
msg: "테스트 로그"
- name: test2
debug:
msg: "패키지 매니저: {{ ansible_pkg_mgr }}, 배포판: {{ ansible_distribution }}"
- name: test3
debug:
msg: "나의 이름: {{ myname }}"
- name: test4
debug:
msg: "file1: {{ name1 }}"
- name: test5
debug:
msg: "file2: {{ names[0] }}, {{ names[1] }}, {{ names[2] }}"
- name: sshd 설정 플레이
hosts: all
become: true
tasks:
- name: root 가 패스워드로 SSH 로그인하는 것을 금지
lineinfile:
dest: /etc/ssh/sshd_config
regexp: '^PermitRootLogin\\s+'
line: PermitRootLogin without-password
validate: sshd -t -f %s
notify:
- sshd 재시작
handlers:
- name: sshd 재시작
service:
name: sshd
state: restarted
ansible all -m shell -a "cat /etc/httpd/conf/httpd.conf | grep Listen”
- name: change the web port
hosts: all
become: true
vars_files:
- vars.yaml
tasks:
- name: find and change webport
lineinfile:
dest: /etc/httpd/conf/httpd.conf
regexp: '^Listen\\s[0-9]+'
line: Listen {{ webport }}
validate: httpd -t -f %s
notify:
- restart webport
- name: make directory
file:
path: /var/www/html
state: directory
- name: make file
file:
path: /var/www/html/index.html
state: touch
- name: add material in index.html
blockinfile:
dest: /var/www/html/index.html
block: |
[test page]
- Hi
- Hello
handlers:
- name: restart webport
service:
name: httpd
state: restarted
sudo dnf install -y git java-21-openjdk wget
sudo yum list | grep java
sudo yum install -y java-17-amazon-corretto-devel.x86_64
sudo java -version
sudo alternatives --config java
sudo dnf install -y epel-release
sudo dnf install -y wget
sudo wget -O /etc/yum.repos.d/jenkins.repo <https://pkg.jenkins.io/redhat-stable/jenkins.repo>
sudo rpm --import <https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key>
sudo systemctl daemon-reload
sudo systemctl start jenkins
cp ~/.ssh/* /var/lib/jenkins
total 20
drwx------ 2 jenkins jenkins 81 Mar 24 15:38 .
drwxr-xr-x 16 jenkins jenkins 4096 Mar 24 15:37 ..
-rw------- 1 jenkins jenkins 2590 Mar 24 15:38 ansible.pem
-rw-r--r-- 1 jenkins jenkins 562 Mar 24 15:38 ansible.pem.pub
-rw------- 1 jenkins jenkins 90 Mar 24 15:38 config
-rw-r--r-- 1 jenkins jenkins 875 Mar 24 15:38 known_hosts
- name: 예제 1 - 일반적인 모듈 실행
copy:
src: /tmp/example.txt
dest: /home/user/example.txt
- name: test
action: "{{ ansible_pkg_mgr }}"
name: httpd
state: present
25.03.26. Docker, Containerd, Docker Compose의 이해와 사용법 (0) | 2025.03.26 |
---|---|
25.03.25. AWS IAM 개념 및 권한 관리 구조 설명 (0) | 2025.03.25 |
25.03.21. Ansible (0) | 2025.03.21 |
25.03.20. KVM 가상화 관리 및 이미지 커스터마이징: 가상 머신 인스턴스 관리부터 커스터마이즈까지 (0) | 2025.03.20 |
25.03.19. KVM을 활용한 가상화 환경 구축 및 NFS 서버 설정 실습 (0) | 2025.03.19 |