Ansible 서버 깔려 있는 이미지 준비해서 다운로드
Ansible 컨테이너 실행
docker run --privileged -itd --name ansible-server -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible:latest /usr/sbin/init
docker sever 실행
docker run --privileged --name docker-server -itd -p 10022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init


Ansible 서버 접속
ssh root@localhost -p 20022


ncurses 설치

/etc/ansible/hosts

엔서블 설치 확인
그룹 : devops
자기 자신도 ansible client처럼 사용
ansible이 없는 docker만 깔린 컨테이너 ansible 클라이언트로 사용
앤서블 서버에서 앤서블 클라이언트로 명령어들 실행해봐서 Infrastructure 및 환경정보 관리해보자

로컬호스트에서는
포트 포워딩으로 접속

엔서블 안에서는
직접 서버 ip address로 접속
이 과정에서 id, password 필요하지만, Ansible에서 매번 password 입력하기 번거롭다
-> 각각의 서버의 password 정보 저장해서, 비밀번호 입력 없이 바로 접속하게 ansible 환경 정보 관리하자
ansible에서 key 설치 후, 해당 키값을 다른 서버에 전달해서 해보자

일단 도커 컨테이너 한 번 접속 해보자
ssh-keygen
ssh-copy-id root@[접속할 서버 IP]


키 복사후 그 다음부터는 바로 접속이 된다 -> 키 복사 ansible 서버와 docker 서버 모두 해주자

인벤토리가 없는 경우 -i 쓰면, /etc/ansible/hosts 파일 디폴트로 쓴다
-i 이후에 파일 설정하면, 호스트 파일 정보 지정 가능
ansible 아닌 경우 echo 할 때마다 계속 쓰여진다Ansible 모듈 사이트
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html


group -m ping

도커 서버 멈추기

명령어 호출 , shell 모듈
ansible all -m shell -a "free -h"
free -h라는 명령어를 각 서버에서 호출하고, 결과 값 출력, -a 옵션은 파라미터 지정
파일 복사

ansible all -m copy -a "src=./test.txt dest=/tmp"
test.txt를 모든 그룹 모든 클라이언트의 /tmp에 복사

ansible devops -m yum -a "name=httpd state=present"
엔서블을 사용하면, 하나의 서버에서 다양한 작업들을 제어할 수 있다
하나의 서버에서 일일이 순차적으로 작업했던 것을, 엔서블 서버에서 한 번만 진행하면 된다
환경설정 및 상태 값 제어도 가능해진다