Ansible 대량 새로운 기계 운영 환경 초기 화

Ansible 을 사용 한 지 2 년 이 넘 었 습 니 다. 그 전에 초기 화 작업 을 한 것 은 모두 kickstart 의 설정 파일 에 자신의 셸 스 크 립 트 를 추가 하여 시스템 환경 을 초기 화 했 습 니 다. 현재 의 운영 환경 이 다 르 기 때문에 초기의 시스템 설치 작업 은 IDC 부서 에 맡 겼 습 니 다. 제 가 할 수 있 는 일 은 스 크 립 트 로 자신 이 좋아 하 는 운영 환경 을 초기 화 하 는 것 입 니 다.Ansible 을 사용 하지 않 기 전에 셸 로 도 그의 일부 기능 을 실현 할 수 있다. 예 를 들 어 Ad - Hoc 를 사용 하 는 장면 에서 생산 환경 을 바탕 으로 하 는 내부 네트워크 SSH Key 가 서로 믿 는 환경 에서 for 순환 을 써 도 간단 한 기능 을 실현 할 수 있다. 그러나 Ansible 은 이런 역할 뿐만 아니 라 그의 Playbook 을 잘 사용 하면 훌륭 한 운영 엔지니어 가 될 수 있다.오스카 최 우수 시스템 운영 감독 상 을 받다.
다음 플레이 북 은 내 가 만 든 새로운 기계 운영 환경 을 초기 화 한 것 으로 all - in - one 파일 로 vars, tasks, templates, handlers 등 을 분리 해서 쓰 지 않 았 다.(옛 규칙, 내 github 에서 다운로드 할 수 있 습 니 다.)
---
- hosts: new
  remote_user: shanker
  sudo: yes
  gather_facts: true
  vars:
    user: shanker
  tasks:
  - name: install provisioning tools, git and zsh dstat via yum
    yum: name={{ item }} state=installed
    when: ansible_os_family == "RedHat"
    with_items:
     - git
     - zsh
     - dstat
     - screen
  - name: install provisioning tools, git and zsh dstat via apt-get
    apt: name={{ item }} state=installed
    when: ansible_os_family == "Debian"
    with_items:
     - git
     - zsh
     - dstat
     - screen

  - name: install epel on centos6 
    yum: name=http://archive.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm state=present
    when: ansible_os_family == "RedHat" and ansible_distribution_version|int <7
  - name: install epel on centos7 
    yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state=present
    when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=7

  - name: install zsh as default shell
    script: /etc/ansible/setuptools/init_zsh.sh
  - name: copy default screen file
    copy: src=/etc/ansible/setuptools/screenrc dest=/etc/screenrc mode=0644 owner=root group=root
  - name: copy ssh provate key
    copy: src=/etc/ansible/setuptools/shanker.pri dest=/home/`user`/.ssh/ mode=0600 owner=`user` group=`user`
  - name: copy ssh config
    copy: src=/etc/ansible/setuptools/config dest=/home/`user`/.ssh/ mode=0644 owner=`user` group=`user`

hosts: new, new 는/etc/ansible/hosts 에서 정 의 된 그룹 입 니 다. 여 기 는 마음대로 정의 할 수 있 습 니 다. 형식 은 이러한 괄호 안에 그룹 이름 이 있 고 다음은 기계 이름 입 니 다.
[new]
ukcent1
ukcent2
remote_user: shanker 는 플레이 북 을 원 격 으로 실행 하 는 사용자 이름 을 말 합 니 다.
sudo: yes, shanker 를 실행 하고 슈퍼 사용자 권한 이 필요 한 명령 을 sudo 로 실행 합 니 다.
gather_facts: true 는 Ansible 에 게 시스템 환경 변수 정 보 를 받 게 하 는 것 으로 아래 의 판단 시스템 은 Redhead or Debian 을 깔 아 줍 니 다.
vars: 
    user: shanker, user 입 니 다. 이 변 수 는 shanker 입 니 다. 아래 copy ssh key 가 홈 디 렉 터 리 에 도착 할 때 사용 해 야 합 니 다.
tasks 다음은 실 행 될 일련의 명령 입 니 다.
전반 부 설치 시스템 소프트웨어 는 Ansible 의 Loop 과 Conditionals 문법 을 사 용 했 습 니 다.
{
구체 적 으로 는 공식 문 서 를 참고 할 수 있다.
http://docs.ansible.com/ansible/playbooks_loops.html
http://docs.ansible.com/ansible/playbooks_conditionals.html
}
이 시스템 의 family 가 Redhat 시리즈 라면 yum 모듈 로 소프트웨어 를 설치 하고 데 비 안 시리즈 라면 apt - get 으로 설치 하 며 withitems 는 그 소프트웨어 를 설치 해 야 하 는 것 을 실현 할 수 있 고 스스로 용량 을 늘 릴 수 있다.
그리고 centos 시스템 이 고 centos 6. * 라면 6 의 epel 가방 을 사용 하고 7 의 시스템 이 라면 7 의 epel 가방 을 사용한다 고 판단 합 니 다.
그리고 아래 의 scrip 모듈 은 Ansible 이 원 격 기기 에서 나의 초기 화 zsh 스 크 립 트 를 실행 하 는 것 에 익숙 하 다 고 알려 줍 니 다. 이것 은 반드시 추가 해 야 합 니 다.
뒤의 copy 모듈 은 자신 이 자주 사용 하 는 프로필 의 복 제 를 실현 했다. 예 를 들 어 vimrc, screen, tmux, bashrc 등 을 스스로 추가 할 수 있다.
마지막 으로 copy 나의 비밀 키 는 새 기계 의 집 디 렉 터 리 에 있 고 위 vars 가 설정 한 변수 user 를 사 용 했 습 니 다.
완 료 된 후에 매번 새로운 기계 가 당신 에 게 유지 보 수 를 해 줄 것 입 니 다. 기 계 를 hosts 에 추가 한 다음 에 플레이 북 을 실행 하면 시간 과 힘 을 절약 할 수 있 습 니 다.
환영 하 다

좋은 웹페이지 즐겨찾기