플레이 북 관리 프로필

이전 편, 플레이 북 으로 nginx 설치:
https://blog.51cto.com/zero01/2067444
노트 내용: 플레이 북 관리 프로필 노트 날짜: 2018 - 01 - 31
  • 24.29 / 24.30 플레이 북 관리 프로필
  • 플레이 북 관리 프로필
    이전 글 에서 저 희 는 플레이 북 을 통 해 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 ~]# 

    위 와 같이 이전에 추 가 된 주석 이 없어 진 것 을 볼 수 있다.
    따라서 스크롤 백 이란 변경 하기 전에 한 부 를 백업 한 다음 에 잘못 수정 되면 이전에 백업 한 파일 을 덮어 쓰 는 것 이다. 그러면 스크롤 백 효 과 를 얻 을 수 있다.

    좋은 웹페이지 즐겨찾기