플레이 북 관리 프로필
https://blog.51cto.com/zero01/2067444
노트 내용: 플레이 북 관리 프로필 노트 날짜: 2018 - 01 - 31
이전 글 에서 저 희 는 플레이 북 을 통 해 nginx 를 성공 적 으로 설 치 했 습 니 다. 생산 환경 에 서 는 프로필 을 관리 해 야 하 는 경우 가 많 습 니 다. 예 를 들 어 프로필 을 수정 한 다음 에 서 비 스 를 다시 시작 해 야 합 니 다. 프로필 을 수정 할 때 오류 가 발생 할 수 있 으 므 로 스크롤 백 작업 을 준비 해 야 합 니 다.패 키 지 를 설치 하 는 것 은 환경 을 초기 화 할 때 만 사용 하 는 것 이다.다음은 nginx 프로필 을 관리 하 는 플레이 북 을 쓰 겠 습 니 다.
1. 해당 디 렉 터 리 만 들 기:
[root@server ~]# mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
[root@server ~]# cd /etc/ansible/nginx_config/
[root@server /etc/ansible/nginx_config]# ls
roles
[root@server /etc/ansible/nginx_config]# ls roles/
new old
[root@server /etc/ansible/nginx_config]# ls roles/new/
files handlers tasks vars
[root@server /etc/ansible/nginx_config]# ls roles/old/
files handlers tasks vars
[root@server /etc/ansible/nginx_config]#
그 중에서 new 는 업데이트 에 사 용 됩 니 다. old 는 스크롤 백 에 사 용 됩 니 다. files 아래 는 nginx. conf 와 vhosts 디 렉 터 리 이 고 handlers 는 nginx 서 비 스 를 다시 시작 하 는 명령 입 니 다.
스크롤 백 에 대해 서 는 플레이 북 을 실행 하기 전에 오래된 설정 을 백업 해 야 합 니 다. 따라서 오래된 설정 파일 에 대한 관 리 는 반드시 엄격 해 야 합 니 다. 온라인 기기 의 설정 을 함부로 수정 해 서 는 안 되 며, new / files 아래 의 설정 과 온라인 설정 이 일치 하도록 해 야 합 니 다.
2. nginx. conf 와 vhost 디 렉 터 리 를 files 디 렉 터 리 아래 에 놓 습 니 다. 저 는 이전에 vhost 디 렉 터 리 를 만 들 었 습 니 다. 이 디 렉 터 리 를 만 들 지 않 았 다 면 nginx. conf 만 복사 하면 됩 니 다.
[root@server /etc/ansible/nginx_config]# cd /usr/local/nginx/conf/
[root@server /usr/local/nginx/conf]# cp -r nginx.conf vhost /etc/ansible/nginx_config/roles/new/files/
[root@server /usr/local/nginx/conf]#
3. 변 수 를 정의 할 파일 편집:
[root@server ~]# vim /etc/ansible/nginx_config/roles/new/vars/main.yml
nginx_basedir: /usr/local/nginx
4. nginx 서 비 스 를 다시 불 러 오 는 데 사용 할 파일 을 편집 합 니 다.
[root@server ~]# vim /etc/ansible/nginx_config/roles/new/handlers/main.yml
- name: restart nginx
shell: /etc/init.d/nginx reload
5. 핵심 작업 을 수행 할 파일 편집:
[root@server ~]# vim /etc/ansible/nginx_config/roles/new/tasks/main.yml
- name: copy conf file
copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644
with_items:
- { src: nginx.conf, dest: conf/nginx.conf }
- { src: vhost, dest: conf/ }
notify: restart nginx
6. 마지막 으로 전체 입구 설정 파일 을 정의 합 니 다.
[root@server ~]# vim /etc/ansible/nginx_config/update.yml
---
- hosts: testhost
user: root
roles:
- new
7. 총 입구 설정 파일 실행:
[root@server ~]# ansible-playbook /etc/ansible/nginx_config/update.yml
PLAY [testhost] *************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************
ok: [192.168.77.128]
TASK [new : copy conf file] *************************************************************************************************
ok: [192.168.77.128] => (item={u'dest': u'conf/nginx.conf', u'src': u'nginx.conf'})
ok: [192.168.77.128] => (item={u'dest': u'conf/', u'src': u'vhost'})
PLAY RECAP ******************************************************************************************************************
192.168.77.128 : ok=2 changed=0 unreachable=0 failed=0
[root@server ~]#
8. 그리고 프로필 의 내용 을 변경 합 니 다.
[root@server ~]# vim /etc/ansible/nginx_config/roles/new/files/nginx.conf
#
9. 다음 명령 을 다시 수행 합 니 다.
[root@server ~]# ansible-playbook /etc/ansible/nginx_config/update.yml
PLAY [testhost] *************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************
ok: [192.168.77.128]
TASK [new : copy conf file] *************************************************************************************************
changed: [192.168.77.128] => (item={u'dest': u'conf/nginx.conf', u'src': u'nginx.conf'})
ok: [192.168.77.128] => (item={u'dest': u'conf/', u'src': u'vhost'})
RUNNING HANDLER [new : restart nginx] ***************************************************************************************
changed: [192.168.77.128]
PLAY RECAP ******************************************************************************************************************
192.168.77.128 : ok=3 changed=2 unreachable=0 failed=0
[root@server ~]#
10. 그리고 클 라 이언 트 에 가서 ngix. conf 파일 을 확인 하 십시오. 우리 가 추가 한 줄 의 내용 이 있 는 지 확인 하 십시오.
[root@client ~]# tail -n2 /usr/local/nginx/conf/nginx.conf
#
}
[root@client ~]#
이상 의 작업 은 설정 파일 을 업데이트 하고 수정 하 는 데 목적 을 두 고 있 습 니 다. 다음은 스크롤 백 작업 을 소개 합 니 다.
1. 스크롤 백 에 대응 하 는 roles 는 old 이기 때문에 먼저 new 디 렉 터 리 의 모든 파일 을 old 디 렉 터 리 에 동기 화 합 니 다. 이 단 계 는 old 디 렉 터 리 에 백업 한 다음 스크롤 백 은 old 디 렉 터 리 에서 파일 을 복사 하 는 것 과 같 습 니 다.
[root@server ~]# rsync -av /etc/ansible/nginx_config/roles/new/ /etc/ansible/nginx_config/roles/old/
sending incremental file list
files/
files/nginx.conf
files/vhost/
files/vhost/aaa.com.conf
files/vhost/default.conf
files/vhost/ld.conf
files/vhost/proxy.conf
files/vhost/ssl.conf
files/vhost/test.com.conf
handlers/
handlers/main.yml
tasks/
tasks/main.yml
vars/
vars/main.yml
sent 5171 bytes received 222 bytes 10786.00 bytes/sec
total size is 4391 speedup is 0.81
[root@server ~]#
스크롤 백 작업 은 오래된 설정 을 덮어 쓰 고 nginx 서 비 스 를 다시 불 러 오 는 것 입 니 다. nginx 설정 파일 을 바 꾸 기 전에 old 에 백업 하고 해당 디 렉 터 리 는 / etc / ansible / nginx 입 니 다.config/roles/old/files。nginx 프로필 을 수정 하기 전에 old 를 백업 하지 않 았 다 면 스크롤 백 작업 을 할 수 없습니다.
총 입구 설정 파일 편집:
[root@server ~]# vim /etc/ansible/nginx_config/rollback.yml
---
- hosts: testhost
user: root
roles:
- old
ok, 상기 조작 을 완성 한 후에 우 리 는 간단 한 스크롤 백 동작 을 보 여 줍 니 다.
1. 예 를 들 어 저 는 지금 nginx 프로필 을 수정 하려 고 합 니 다. 이 파일 의 끝 에 주석 을 추가 하려 고 합 니 다. 그러나 이 줄 의 주석 을 추가 하기 전에 설정 파일 을 old 디 렉 터 리 에 동기 화해 야 합 니 다.
[root@server ~]# rsync -av /etc/ansible/nginx_config/roles/new/files/nginx.conf /etc/ansible/nginx_config/roles/old/files/nginx.conf
sending incremental file list
nginx.conf
sent 1465 bytes received 31 bytes 2992.00 bytes/sec
total size is 1387 speedup is 0.93
[root@server ~]#
2. 그리고 이 줄 의 주석 을 추가 합 니 다.
[root@server ~]# echo "# " >> /etc/ansible/nginx_config/roles/new/files/nginx.conf
[root@server ~]#
3. update. yml 파일 을 실행 하여 클 라 이언 트 에 파일 을 업데이트 합 니 다.
[root@server ~]# ansible-playbook /etc/ansible/nginx_config/update.yml
PLAY [testhost] *************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************
ok: [192.168.77.128]
TASK [new : copy conf file] *************************************************************************************************
changed: [192.168.77.128] => (item={u'dest': u'conf/nginx.conf', u'src': u'nginx.conf'})
ok: [192.168.77.128] => (item={u'dest': u'conf/', u'src': u'vhost'})
RUNNING HANDLER [new : restart nginx] ***************************************************************************************
changed: [192.168.77.128]
PLAY RECAP ******************************************************************************************************************
192.168.77.128 : ok=3 changed=2 unreachable=0 failed=0
[root@server ~]#
4. 그리고 클 라 이언 트 에 가서 우리 가 추가 한 줄 의 주석 이 있 는 지 확인 합 니 다.
[root@client ~]# tail -n1 /usr/local/nginx/conf/nginx.conf
#
[root@client ~]#
5. 확인 후 rollback. yml 파일 을 실행 하여 스크롤 백 작업 을 진행 합 니 다.
[root@server ~]# ansible-playbook /etc/ansible/nginx_config/rollback.yml
PLAY [testhost] *************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************
ok: [192.168.77.128]
TASK [old : copy conf file] *************************************************************************************************
changed: [192.168.77.128] => (item={u'dest': u'conf/nginx.conf', u'src': u'nginx.conf'})
ok: [192.168.77.128] => (item={u'dest': u'conf/', u'src': u'vhost'})
RUNNING HANDLER [old : restart nginx] ***************************************************************************************
changed: [192.168.77.128]
PLAY RECAP ******************************************************************************************************************
192.168.77.128 : ok=3 changed=2 unreachable=0 failed=0
[root@server ~]#
6. 그리고 클 라 이언 트 에 가서 복구 되 었 는 지 확인 합 니 다.
[root@client ~]# tail -n1 /usr/local/nginx/conf/nginx.conf
}
[root@client ~]#
위 와 같이 이전에 추 가 된 주석 이 없어 진 것 을 볼 수 있다.
따라서 스크롤 백 이란 변경 하기 전에 한 부 를 백업 한 다음 에 잘못 수정 되면 이전에 백업 한 파일 을 덮어 쓰 는 것 이다. 그러면 스크롤 백 효 과 를 얻 을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ansible Study - PlaybooksInventory 에서 정의된 호스트에서 무엇을 해야할지를 정의한 것. 자동화 절차를 기술한 코드 파일 코드 Set을 의미함. YAML 형식으로 기록 playbook의 목표는 호스트의 그룹을 정의된 Ansible내에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.