Ansible의 자동화된 운영 및 유지 관리를 위한 공통 모듈 도입 및 배포

목차

1. Ansible 개요 1. Ansible 소개

2.Ansible은 다음과 같은 특징을 가지고 있습니다.

2. Ansible 환경 설치 및 배포 

1.환경 준비

2. 앤서블 설치

(1) 관리측에 epel 확장 소스를 설치하고 ansible을 설치합니다.

​(2)트리 쿼리 도구 

(3) 호스트 목록 구성 

(4) 키 쌍 검증 구성 

3. Ansible 명령줄 모듈

1.Ansible-doc 명령 - 기본 모듈 - 명령 실행

2.Ansible 공통 모듈 

(1) 명령 모듈 

(2) 크론 모듈 

(3)사용자 모듈(사용자 관리)

(4)그룹 모듈(사용자(그룹) 모듈)

(5)복사 모듈(복사 모듈)

​(6)파일 모듈(파일 속성 지정)

(7)ping 모듈(연결 상태 테스트)  

(8)서비스 모듈(서비스 상태 관리)

(9).쉘 모듈(상호작용 없음)

(10).yum 모듈(소프트웨어 패키지 설치/제거)

(11).script 모듈(스크립트 실행) 

(12).setup 모듈 - (정보 수집) 


1. Ansible 개요
1. Ansible 소개

        Ansible은 Python을 기반으로 개발된 구성 관리 및 애플리케이션 배포 도구로, 이제 자동화 관리 분야에서도 빛을 발하고 있습니다. Ansible은 기존의 많은 운영 및 유지 관리 도구의 장점을 결합하여 기본적으로 Pubbet 및 Saltstack이 달성할 수 있는 모든 기능을 구현할 수 있습니다.

        Ansible은 수천 개의 호스트를 일괄적으로 구성, 배포 및 관리할 수 있습니다. 예를 들어, 과거에는 각 호스트에서 수행되는 하나 이상의 작업으로 전환해야 했지만, Ansible을 사용하면 고정된 Ansible 제어 노드에서 모든 호스트의 작업을 완료하기만 하면 됩니다.

        Ansible은 모듈 기반으로 작동합니다. 실행 중인 프레임워크만 제공합니다. 작업을 완료하는 기능은 없습니다. 실제로 작업을 수행하는 것은 Ansible의 모듈입니다. 예를 들어 복사 모듈은 파일을 원격 호스트에 복사하는 데 사용되며, 서비스 모듈은 서비스 시작, 중지, 재시작 등을 관리하는 데 사용됩니다.

        Ansible의 가장 큰 특징 중 하나는 Agentless, 즉 Agent가 없다는 점입니다. 이는 C/S 소프트웨어가 아닌 일반적인 명령과 같습니다. Ansible은 제어 노드로 호스트에 한 번만 설치하면 됩니다. 일반적으로 SSH 접속을 기반으로 원격 호스트를 제어하기 때문에 원격 호스트에 Ansible이나 기타 추가 서비스를 설치할 필요가 없습니다.

        사용자가 서버 단말에 명령어나 플레이북을 입력하면, 플레이북은 미리 정해진 규칙에 따라 플레이로 분해된 후 앤서블이 인식할 수 있는 작업으로 정리되어 모듈과 플러그인을 호출하고, 그에 따라 SSH를 통해 임시 파일을 전송한다. 호스트 목록을 실행하여 원격 클라이언트에 결과를 반환하고, 실행 후 자동으로 삭제합니다.

        Ansible의 또 다른 특징은 대부분의 모듈이 멱등원이라는 것입니다. 소위 멱등성은 여러 작업이나 여러 실행이 시스템 리소스에 일관된 영향을 미친다는 것을 의미합니다. 예를 들어 systemctl stop xxx 명령을 실행하여 서비스를 중지하는 경우 중지하려는 대상 서비스가 이미 중지된 상태인 것으로 확인되면 아무 작업도 수행하지 않으므로 여러 번 중지한 결과는 여전히 중지입니다. 결과는 변경되지 않습니다. 멱등성이고 systemctl restart xxx는 멱등성이 아닙니다.

        Ansible의 많은 모듈은 실행 시 대상 노드가 작업을 수행할지 여부를 먼저 결정하므로 Ansible이 작업을 안전하고 대담하게 수행하도록 할 수 있습니다. 작업을 반복적으로 실행해도 대부분의 경우 부작용이 발생하지 않습니다.

2.Ansible은 다음과 같은 특징을 가지고 있습니다.

①배포가 간단합니다. 주 제어 측에 Ansible 환경을 배포하기만 하면 되며 제어 측에서는 어떤 작업도 수행할 필요가 없습니다.
②SSH 프로토콜 장치가 사용됩니다. 기본적으로 관리용;
③마스터-슬레이브 중앙 집중식 관리
④간단한 구성, 강력한 기능 및 강력한 확장성:
⑤API 및 Python 확장을 통해 쉽게 사용할 수 있는 사용자 정의 모듈
⑥플레이북을 사용하여 강력한 구성 및 상태 관리를 사용자 정의
7클라우드 컴퓨팅 플랫폼 및 빅 데이터에 대한 우수한 지원 아>

2. Ansible 환경 설치 및 배포 

1.환경 준비

관리 종료 : 192.168.40.60 앤서블                    

관리측: 192.168.40.50                                

관리되는 끝: 192.168.40.40

2. 앤서블 설치

(1) 관리측에 epel 확장 소스를 설치하고 ansible을 설치합니다.

yum install -y epel-release                                                                                                                                                 //epel 소스를 먼저 설치하세요

 (2)트리 쿼리 도구 

yum -y 설치 트리
 
트리 /etc/ansible
 
//가능한 디렉터리 구조
/etc/ ansible/
ansible.cfg #ansible 구성 파일, 일반적으로 수정할 필요가 없습니다.
호스트 #ansible 호스트 목록, 필요한 원격 호스트에 대한 정보를 저장하는 데 사용됩니다. 관리 대상
roles/       #공용 역할 디렉토리

 

(3) 호스트 목록 구성 

cd /etc/ansible
vim 호스트
[webservers] #구성 그룹 이름
192.168.40.50 # 그룹에 포함된 관리 호스트 IP 주소 또는 호스트 이름(먼저 /etc/hosts 파일에서 호스트 이름을 수정해야 함)
[dbservers]
192.168.40.40< /span>

 (4) 키 쌍 검증 구성 

ssh-keygen -t rsa #끝까지 Enter를 누르고 비밀번호 없이 로그인
 
sshpass -p '123456' ssh-copy-id root@ 192.168.40.50
sshpass -p '123456' ssh-copy-id [email protected]
또는
 
ssh -copy-id [email protected]
ssh-copy-id [email protected]

 

 

3. Ansible명령줄 모듈

1.Ansible-doc 명령 - 기본 모듈 - 명령 실행

간단한 명령을 사용하는 데 적합하며 "<", ">", "|", "", "&"와 같은 기호는 지원되지 않습니다.

ansible-doc 명령은 일반적으로 모듈 정보를 얻고 사용에 대한 도움말을 얻는 데 사용됩니다.

//설치된 모든 모듈 나열, 참고: 종료하려면 q를 누르세요.
ansible-doc -l
//-s는 yum 모듈 설명 정보를 나열합니다. 및 작업 작업
ansible-doc -s yum

 2. 공통 모듈 가능 

 명령 형식: A ASIBLE [호스트] [-M 모듈] [-a 인수]
                                     매개변수

(1) 명령 모듈 

//指정ip执行date
ansible 192.168.40.60 -m command -a 'date'
//指定分类执行date
ansible webserver -m command -a 'date'
ansible mysql -m command -a 'date'
//所有hosts主机执行date
ansible all -m command -a 'date'

//-m 모듈을 추가하지 않으면 기본적으로 명령 모듈이 실행됩니다.
ansible all -a 'ls /'

 

(2) 크론 모듈 

 이 모듈은 cron 예약된 작업을 관리하는 데 적합합니다. 사용된 구문은 crontab 파일의 구문과 일치합니다.

크론 모듈 정보 보기

ansible-doc -s cron
#cron 모듈 정보 보기
ansible-doc -s cron

#webserver: Category -m은 모듈을 지정합니다. -a는 모듈의 지침을 출력합니다. 분: 매 분, 작업: hello 출력, 작업 이름: 테스트
ansible webserver -m cron -a "분="*/1" 작업="/usr/bin/echo hello" 이름="테스트"'

#계획된 작업 명령 보기
ansible webserver -a 'crontab -l'

#예약된 작업 제거
ansible webserver -m cron -a 'name="test" state=absent'

 

(3)사용자 모듈(사용자 관리)

이 모듈은 주로 사용자 계정을 관리하는 데 사용됩니다.

사용자 모듈은 useradd, userdel 및 usermod라는 세 가지 명령을 요청합니다.

사용자 모듈 정보 보기 

 ansible -사용자

//사용자 test01 생성
ansible mysql -m user -a 'name="test01"'
/ /생성된 사용자 정보 보기
ansible mysql -a 'tail /etc/passwd'
//사용자 test01 삭제< a i=5> ansible mysql -m user -a 'name="test01" state=absent'

 

(4)그룹 모듈(사용자(그룹) 모듈)

주로 그룹을 추가하거나 삭제하는 데 사용되는 모듈입니다.
그룹 모듈은 groupadd, groupdel 및 groupmod의 세 가지 명령을 요청합니다.

그룹 모듈 정보 보기

 ansible-doc -s 그룹

ansible mysql -m user -a 'name="test01"'
//그룹 생성
ansible mysql -m group -a 'name=mysql gid=300 system=yes'
//그룹 정보 보기
ansible mysql -a 39;tail /etc/group'
//사용자 모듈을 사용하여 그룹에 구성원을 추가합니다.
ansible mysql -m user -a ' ;이름 =test01 uid=306 시스템=예 그룹=mysql'

ansible mysql -a 'id test01'

 

(5)복사 모듈(복사 모듈)

효율적인 파일 복사본 만들기

ansible-doc -s 복사

ansible mysql -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'

ansible mysql -a 'ls /opt'
ansible mysql -a 'cat /opt/fstab.back'

ansible mysql -m copy -a 'content="hello lic" dest=/opt/test.txt'
ansible mysql -a 'cat /opt/test.txt'

(6)파일 모듈(파일 속성 지정)

ansible-doc -s 파일

ansible mysql -m user -a 'name=mysql system=yes'

ansible mysql -m file -a 'owner=mysql 그룹=mysql 모드=600 path=/opt/test.txt'
ansible mysql -a & #39;ls -l /opt/test.txt'

#创建
#ansible mysql -m file -a 'path=/opt/abc.txt state=touch'

ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
앤서블 mysql -a 'ls -l /opt'

#移除文件/opt/test.txt
ansible mysql -m file -a 'path=/opt/test.txt state=absent'< /span>

(7)ping 모듈(연결 상태 테스트)  

 모든 -m 핑 가능 

 

(8)서비스 모듈(서비스 상태 관리)

서비스: 서비스 실행 상태를 관리하기 위해 사용됩니다.

ansible-doc -s 서비스

[root@localhost ~]# ansible webservers -m service -a 'name=httpdenabled=true state=started'
##启动httpd服务,前提是将httpd服务安装好
192.168.182.22 | 변경됨 => {     "ansible_facts": {         "discovered_interpreter_python": "/usr/bin/python"     },      "변경됨": true,      "활성화됨": true,      "이름": "httpd",      "상태": " ;시작됨',  ......








[root@localhost ~]# ansible webservers -m service -a 'name=httpd 활성화=true state=stopped' #서비스 닫기

(9).쉘 모듈(상호작용 없음)

쉘 모듈에서는 "<", ">", "|", ";;", "&" 등의 특수 기호를 사용할 수 있으며 사용 방법은 다음과 같습니다. 명령 모듈.

ansible-doc -s 쉘

ansible mysql -m user -a 'name=zhangsan'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin zhangsan'

(10).모듈(패키지 설치/제거)

yum: yum 패키지 관리자를 사용하여 패키지와 그룹을 설치, 업그레이드, 다운그레이드, 제거 및 나열합니다.

[root@localhost ~]# ansible webservers -m yum -a 'name=httpd'
##安装httpd服务
[root@localhost ~]# ansible webservers -m yum -a 'name=httpd'
192.168.40.60 | 변경됨 => {     "ansible_facts": {         "discovered_interpreter_python": "/usr/bin/python"     },      "변경됨": true,      "변경사항": {         '설치됨': [             'httpd'         ]     }, < /span>  ......










[root@localhost ~]# ansible mysql -m yum -a 'name=httpd state=absent'
##移除httpd服务

(11).script 모듈(스크립트 실행) 

[root@localhost ~]# cd /opt/
[root@localhost opt]# vim test.sh
#!/bin/ bash
echo "테스트 스크립트입니다." > /opt/script.txt
chmod 666 /opt/script.txt


[root@localhost opt]# chmod +x test.sh 

[root@localhost opt]# ansible all -m script -a 'test.sh' #使사용스크립트模块执行创建的脚本
192.168.200.30 | 변경됨 => {     "변경됨": true,      "rc": 0,      "stderr": "공유 연결" to 192.168.200.30 폐쇄됨.\r\n",      "stderr_lines": [         "192.168.200.30에 대한 공유 연결이 폐쇄되었습니다." }     "stdout_lines": []     "stdout": "",      ],          "192.168.200.40에 대한 공유 연결 닫힘."     "stderr_lines": [     "stderr": "공유 연결" to 192.168.200.40 닫힘.\r\n",      "rc": 0,      "변경됨": true,  192.168.200.40 | 변경됨 => { }     "stdout_lines": []     "stdout": "",      ], 


















(12).setup 모듈 - (정보 수집) 

ansible-doc -s 설정

#MySQL 그룹 호스트의 사실 정보 가져오기
ansible mysql -m setup   

Ansible 사실은 주로 IP 주소, 운영 체제, 이더넷 장치, MAC 주소, 시간/날짜 관련 데이터, 하드웨어 정보 및 기타 정보를 포함하는 원격 시스템에 대한 정보입니다.​ 

 

 

 

 

 

 

추천

출처blog.csdn.net/weixin_52269501/article/details/130476015