ansible-server
iac
infrastructure as code.
구성관리 도구
it인프라 , 베어메탈 서버등의 무리장비 및 가상 머신과 관련된 구성 리소스를 관리
할수있는일
설치 : apt-get . yum . hombrew
파일 스크립트 배포 copy
다운로드 get_url ,git
실행 shell. task
- Docekr repository
- Ansible 이미지 다운로드
- Windows, MacOS intel chip) docker pull edowon0623/ansible:latest (updated by 2022-09-21)
- MacOS silicon chip, m1) docker pull edowon0623/ansible-server:m1
- Windows) Ansible 컨테이너 실행 명령어 (방법1)
- docker run -itd --name ansible-server -p 20022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/ansible:latest /usr/sbin/init
- MacOS silicon chip, m1)) Ansible 컨테이너 실행 명령어
- docker run --privileged --name ansible-server -itd -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/ansible-server:m1 /usr/sbin/init
- ssh root@ 172.30.1.30 -p 20022
- P@ssw0rd
- 컨테이너에서 실행, /etc/sysconfig/docker 파일이 존재하지 않을 경우에는 아래의 vi, sed 명령어는 실행하지 않음)
- $ vi /etc/sysconfig/docker
- (window) $ sed -i -e 's/overlay2/vfs/g' /etc/sysconfig/docker-storage
- $ systemctl start docker
- $ systemctl status docker
- 컨테이너에서 실행, /etc/sysconfig/docker 파일이 존재하지 않을 경우에는 아래의 vi, sed 명령어는 실행하지 않음)
- SSH 키 생성
- ssh-keygen
- ssh-copy-id root@[접속할 서버 IP]
실행옵션
-i 적용될 호스트들에 대한 파일정보. (기본 /etc/ansible/hosts)
-m 모듈선택
-k 관리자 암호요청
--list-hosts적용되는 호스트목록
멱등성
같은 설정을 여러 번 적용하더라도 결과가 달라지지 않는 성질
/etc/ansible/hosts
[root@774bee08ece4 ~]# cat /etc/ansible/hosts
[devops]
172.17.0.3
172.17.0.4
핑 보내보기
ansible devops -m ping.
ansible all -m ping
메모리 확인
free -h
ansible devops -m shell -a "free -h"
파일 복사
echo "HI, ansible" >> test.txt
ansible devops -m copy -a "src=./test.txt dest=/tmp"
프로그램 설치
yum list installed | grep httpd
ansible devops -m yum -a "name=httpd state=present"
ansible playbook 사용하여 파일 내용 수정
[root@774bee08ece4 ~]# vi first-playbook.yml
[root@774bee08ece4 ~]# cat first-playbook.yml
---
- name: Add an ansible hosts
hosts: localhost
tasks:
- name: Add an ansible hosts
blockinfile:
path: /etc/ansible/hosts
block: |
[mygroup]
172.17.0.5
ansible-playbook first-playbook.yml
ansible-playbook 사용하여 파일복사
[root@774bee08ece4 ~]# vi playbook-sample1.yml
[root@774bee08ece4 ~]# cat playbook-sample1.yml
- name: Ansible Copy Example Local to Remtoe
hosts: devops
tasks:
- name: copying file with playbook
copy:
src: ~/sample.txt
dest: /tmp
owner: root
mode: 0644
ansible-playbook playbook-sample1.yml
ansible-playbook playbook-sample2.yml
---
- name: Download Tomcat9 from tomcat.apache.org
hosts: devops
tasks:
- name: Create a Directory /opt/tomcat9
file:
path: /opt/tomcat9
state: directory
mode: 0755
- name: Download Tomcat using get_url
get_url:
url: https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz
dest: /opt/tomcat9
mode: 0755
checksum: sha512:https://downloads.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz.sha512
(tomcat버전은 바뀜)