server

ansible-server

구라쟁이악마 2022. 10. 25. 17:37

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

 

  • 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버전은 바뀜)