본문 바로가기
Docker

ansible

by 판매자명단 2023. 10. 16.

[Docker] - docker, kubernetes 기초설정, 예제

 

docker, kubernetes 기초설정, 예제

* ubuntu 22.04 / ip 192.168.2.10/24 / hostname ubuntu sudo -i DOCKER_USER=ubuntu DOCKER_COMPOSE_VERSION=2.17.3 #의존성 설치 apt update -y && apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release #docker가 제공하

y7712.tistory.com

 

 

우선 docker hub에 사용할 ansible image를 올려준다

 

#tab1 ansible-server
docker login

docker run --privileged --name ansible-server -d -p 20022:22 -p 8081:8080 -e container=docker \
-v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host [username]/[Repositorie] /usr/sbin/init

 

 

위에 올린 image를 run 시켜준다 

ex) hongildong/ansible

 

#ansible-server
docker exec -it ansible-server bash
cat /etc/*release

# clear, ifconfig 등 사용을 위해 설치
yum install -y ncurses net-tools nano

 

 

 

ansible에 접속해서 버전을 확인해 준다

* centos를 사용하므로 redhat계열 명령어 사용

 

ansible 작동 확인

 

#tab2 docker-server2
docker run --privileged --name docker-server2 -d -p 30022:22 -p 8082:8080 -e container=docker \
-v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host [username]/[repositorie] /usr/sbin/init
docker exec -it docker-server2 bash

#tab3 tomcat
docker run -d --name tomcat -p 8083:8080 tomcat:9.0
docker exec -it tomcat bash

#tab4 jenkins-server
docker run --privileged -d -p 8084:8080 -p 50000:50000 --restart=on-failure \
-v jenkins_home:/var/jenkins_home --name jenkins-server jenkins/jenkins
docker exec -it -u 0 jenkins-server bash

* -u 0 : jenkins 관리자접속

 

같은 image로 docker-server용으로 하나 더 열어주고 테스트용 tomcat도 하나 열어준다

ansible client용 jenkins도 접속해 준다

 

편의를 위해 개별 tab 4개에 모두 열어둠

#tomcat, jenkins
apt update
apt install -y openssh-client openssh-server
passwd root / pw : 12345
nano /etc/ssh/sshd_config

#/etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
PermitRootLogin yes
PubkeyAuthentication yes

service reestart ssh

#ansible-server
mkdir /etc/ansible
nano /etc/ansible/hosts

#/etc/ansible/hosts
[jenkins-server]
172.17.0.2

[docker-server1-tomcat]
172.17.0.3

[ansible-server]
172.17.0.4

[docker-server2]
172.17.0.5

 

tomcat과 jenkins에 ssh를 설치 후 설정파일을 수정하고, ansible에 위 파일 및 설정을 추가해 준다

* hosts 파일의 내용은 해당 ip의 이름을 정해주는 내용 ip는 각 container들의 ip

 

#ansible-server
ssh-keygen

* 물음이 나오면 그냥 엔터

ssh-copy-id root@172.17.0.2 # pw 12345
ssh-copy-id root@172.17.0.3 # pw 12345
ssh-copy-id root@172.17.0.4 # pw P@ssw0rd
ssh-copy-id root@172.17.0.5 # pw P@ssw0rd

* 물음이 나오면 yes

 

ansible-server에서 key를 만들고 각 ssh에 비밀번호 없이 접속하도록 자동 로그인을 설정해 준다

 

#ansible-server
ansible all -m ping

 

ansible의 ping 모듈을 사용해 보니 모두 통신이 되는 걸 확인할 수 있다

 

172.17.0.2 | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "module_stderr": "Shared connection to 172.17.0.2 closed.\r\n",
    "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
    "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error",
    "rc": 127
}

 

* 위 error가 뜨면서 ping이 되지 않는다면 python3 설치를 확인해 보자

 

#ansible-server
ansible all -m shell -a "free -h"
ansible all -m shell -a "uptime"

 

쉘 모듈을 사용하면 명령어를 전송할 수 있다

 

#ansible-server
cat > test.txt
ansible -m shell -a "mkdir /test"
ansible -m copy -a "src=./test.txt dest=/test"
ansible -m shell -a "cat /test/test.txt"

 

위에 사용한 shell 모듈로 폴더를 만들고 copy 모듈을 사용해 파일을 복사해서 배포가 가능하다

 

#ansible-server
ansible docker-server1-tomcat -m apt -a "name=apache2 state=present"

#tomcat
service apache2 status

 

apt, yum 모듈을 사용해 해당 container에 package 설치도 가능하다

'Docker' 카테고리의 다른 글

docker image save/load  (0) 2023.10.06
docker commit  (0) 2023.10.06
docker volume  (0) 2023.10.05
docker network  (0) 2023.10.05
docker compose를 활용한 wordpress 설치  (0) 2023.10.05