ansible-playbook編寫服務器初始化腳本

 

1.原理:經過limit的參數,限制新定義的服務器。便可給新買的服務器初始化優化。(以下圖所示)git

 

 

 

首先咱們編寫一個總入口的palybook腳本: init.ymlshell

---
- hosts: all
  user: root
  gather_facts: true
  roles:
    - ../../init

 

第二步:建立相對應的目錄。這些目錄都有各自的功能。vim

mkdir {file,tasks,vars}                // 具體的目錄和功能,能夠上網查一下。centos

第三步:進入到vars目錄下定義hosts的內置變量服務器

vim main.yml
---
HOSTNAME: "{{ inventory_hostname }}"
IP: "{{ ansible_eth0['ipv4']['address'] }}"

 

第四步:進入到tasks目錄下,建立任務的腳本。app

main.yml做爲整個tasks目錄的總入口,是必須有這個配置ssh

 

vim main.yml
---
- name: 複製 PS1 變量
  copy:
    src: ps1.sh
    dest: /etc/profile.d/
- shell: source /etc/profile
- include_tasks: init_hostname.yml    # include相似於子配置腳本。
- include_tasks: init_user.yml
- include_tasks: init_tools.yml

 子腳本1優化

vim init_user.yml
---
# 建立用戶。generate_ssh_key參數是生成公鑰和私鑰。我這裏主要是生成.ssh目錄,而後推送authorized_key
- name: create user
  user: name="{{ item}}" append=yes generate_ssh_key=yes
  with_items:
    - ops
    - dev
# 推送用到authorized_key模塊
- name:
  authorized_key: user={{ item }} key={{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}
  with_items:
  - ops
  - dev

子腳本2centos7

vim init_tools.yml
---
- name: 安裝基本命令
  yum: name={{ item }}
  with_items:
    - epel-release
    - telnet
    - vim
    - unzip
    - tree
    - net-tools
    - git
    - screen

子腳本3spa

 

vim init_hostname.yml
--- - name: update file (/etc/sysconfig/network) lineinfile: dest: /etc/sysconfig/network regexp: '^HOSTNAME' line: 'HOSTNAME={{ HOSTNAME }}' when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "6" - name: execute hostname command shell: hostname {{ HOSTNAME }} when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "6" - name: set hostname for centos7 shell: hostnamectl set-hostname "{{ HOSTNAME }}" when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == "7"

上面還定義了一個拷貝文件的任務。因此咱們在要files的目錄下,放上你要用到的文件

vim ps1.sh
# 更改 PS1 顯示
export PS1='[\[\e[36m\]\u\[\e[33m\]@\[\e[34m\]\H\[\e[33m\]:\[\e[32m\]\w\[\e[0m\]]\$ '
# 歷史命令
HISTSIZE=100000

 

這樣,一個簡單的role角本就寫好了。下面咱們來建立新的虛擬機,添加hosts文件。驗證一下結果吧

添加hosts文件

 

 

驗證結果

這樣,經過ansible的playbook,就能夠對新的服務器進行初始化了。

相關文章
相關標籤/搜索