首頁 > 軟體

Ansible設定及使用

2020-06-16 17:18:26

Ansible特點

  • 基於Python語言開發
  • 不需要安裝用戶端,通過sshd通訊
  • 基於模組工作,模組支援多種語言開發
  • 支援編寫yaml格式的playbook,組態檔縮排2行
  • 支援sudo
  • 提供UI,流量器圖形化 www.ansible.com/tower
  • 開源UI https://gitub.com/alaxli/ansible_ui

一、Ansible安裝設定

1. 環境

    master:172.16.115.157

    agent:172.16.115.202

2. 伺服器端安裝ansible,用戶端無需安裝,關閉selinux

    setenforce 0

    yum install -y epel-release

    yum install -y ansible

    yum install -y openssl-clients

3. 伺服器端生成金鑰對,目錄/root/.ssh/

    ssh-keygen -t rsa   //無需設定單獨密碼,生成公鑰和秘鑰id_rsa  id_rsa.pub

4. 將伺服器端公鑰內容放到客戶機和本機認證檔案中,授600許可權

    scp /root/.ssh/id-rsa.pub   ip:/root/.ssh/authorized_keys

    cat /root/.ssh/id-rsa.pub >>/root/.ssh/authorized_keys  // ssh 127.0.0.1

    chmod 600 /root/.ssh/authorized_keys

5. 修改ansible組態檔/etc/ansible/hosts,新增組以及組內IP

    [testhost]              #自定義主機組名字

    172.16.115.157     #組內機器ip或者機器域名(需先設定好/etc/hosts)

    127.0.0.1

二、命令模組使用

1. Ansible文件使用

    ansible-doc -l        # 列出所有模組

    ansible-doc cron   # 檢視指定模組文件

2. ping命令模組

    ansible testhost -m ping  #測試機器是否線上

3. command命令模組

    ansible testhost -m command -a 'w'              #批次執行命令;-m 後面跟模組名;-a 跟命令

    ansible 172.16.115.202 -m command -a 'w'   #單獨執行命令

4. shell命令模組

    說明:shell包含command,並且支援管道和遠端執行指令碼

    ansible testhost -m -a 'w'

    註:可能用到的擴充套件包:yum install -y libselinux-python  

5. copy命令模組-拷貝目錄和檔案

    說明:可同時指定使用者屬主和許可權,源目錄拷貝到目標目錄下面去,如果目標目錄不存在,則會自動建立

    ansible master.huangzp.com -m copy -a "src=/etc/ansible dest=/tmp/ansibletest owner=root group=root mode=0755"

    ansible master.huangzp.com -m copy -a "src=/etc/passwd dest=/tmp/1.txt"

6. cron命令模組-新增和刪除計任務

    說明:name計劃名稱,job計劃動作

    ansible testhost -m -a "name='test_cron' job='/bin/touch /tmp/ansible_test02.txt day='1-30' weekday='4'"

    ansible testhost -m cron -a "name='test_cron' state='absent'"


    註:分鐘minute  小時hour  日期day  月份month  周weekday

7. yum命令模組-安裝rpm包

    說明:rpm需寫全稱(實際,遠端執行shell命令更方便),可以填寫state=installed

    ansible testhost -m yum -a "name=iftop"

    註:雙引號中沒有單引號

8. service命令模組-管理rpm服務

    說明:state狀態可以為:啟動start、停止stop等;enabled為開機啟動

    ansible testhost -m service -a "name=iftop state=started enabled=yes"

三、ansible playbook 

     相當於將各命令模組內容寫進組態檔中,然後集中執行,類似於shell指令碼。例如:實際生產中,需批次管理很多機器,yum安裝,管理組態檔、服務等

1. ansible組態檔格式

    vim /etc/ansible/test.yml   # 以.yml結尾

--- #固定格式開頭
 - hosts: testhost #目標主機列表,可以是單台主機
   remote_user: root #指定用什麼使用者登入遠端主機執行操作
   tasks: 
   - name: test_playbook #任務描述,會列印出來
    shell: /bin/touch /tmp/ansible_test03.txt #具體任務

 

2. 執行ansible playbook

    ansible-playbook test.yml

 

3. 蒐集機器上系統相關資訊,用到setup模組

    說明:當管理較多不同系統的主機時,可以根據獲取到的不同型別執行對應操作,如Ubuntu,使用apt-get

     ansible testhost -m setup

4. ansible變數-user命令模組

    vim /etc/ansible/create_user.yml

---
- name: create_user
  hosts: agent.huangzp.com
  gather_facts: false #是否啟用setup命令模組獲取的資訊
  vars:
   - user: "test" #var指定user為變數,test為變數的值,需引號
  tasks:
      - name: create user
        user: name="{{ user }}" #name為user命令模組的引數,{{ user }}變數表示形式

 

 

5. file命令模組-ansible迴圈

    vim /etc/ansible/loop.yml

---
- hosts: testhost
  user: root
  tasks:
    - name: change mode for file
     file: path=/tmp/{{ item }} mode=600 owner=root group=root
     with_items:
      - 1.txt
      - 2.txt

 

 

6. when命令模組-ansible條件判斷

    vim /etc/ansible/when.yml

---
- hosts: testhost
  user: root
  gather_facts: True
  tasks:
   - name: use when
    shell: /bin/touch /tmp/when.txt
    when: facter_ipaddress == "172.16.115.202"

 

 

 

下面關於Ansible的文章您也可能喜歡,不妨參考下:

使用Ansible批次管理遠端伺服器  http://www.linuxidc.com/Linux/2015-05/118080.htm

CentOS 7 中安裝並使用自動化工具 Ansible  http://www.linuxidc.com/Linux/2015-10/123801.htm

CentOS 7上搭建Jenkins+Ansible服務  http://www.linuxidc.com/Linux/2016-12/138737.htm

Linux下原始碼編譯安裝Ansible及排錯記錄  http://www.linuxidc.com/Linux/2017-03/141427.htm

Ansible基礎—安裝與常用模組  http://www.linuxidc.com/Linux/2017-02/140216.htm

自動化運維工具之 Ansible 介紹及安裝使用  http://www.linuxidc.com/Linux/2016-12/138104.htm

Ansible入門notify和handlers  http://www.linuxidc.com/Linux/2017-02/140871.htm

CentOS 6.5安裝自動化工具Ansible和圖形化工具Tower  http://www.linuxidc.com/Linux/2017-03/141422.htm


IT145.com E-mail:sddin#qq.com