ansible之介紹及環境部署

一、Ansible介紹

Ansible是一個簡單的自動化運維管理工具,基於Python語言實現,由Paramiko和PyYAML兩個關鍵模塊構建,可用於自動化部署應用、配置、編排task(持續交付、無宕機更新等)

1.1 ansible基礎架構

在這裏插入圖片描述

  • **Ansible:**Ansible核心程序。
  • **HostInventory:**記錄由Ansible管理的主機信息,包括端口、密碼、ip等。
  • Playbooks:“劇本”YAML格式文件,多個任務定義在一個文件中,定義主機需要調用哪些模塊來完成的功能。
  • CoreModules核心模塊,主要操作是通過調用核心模塊來完成管理任務。
  • CustomModules:自定義模塊,完成核心模塊無法完成的功能,支持多種語言
  • ConnectionPlugins:連接插件,Ansible和Host通信使用

二、環境部署

1、實驗環境

這裏我準備了兩臺centos7的虛擬機,一臺ip爲192.168.189.129作爲管理端,另一臺192.168.189.134作爲被管理端,可以先對他們的主機名稱修改,便於實驗時識別

#192.168.189.129
hostnamectl set-hostname ansible_center
#192.168.189.134
hostnamectl set-hostname ansible_node1

2、安裝

ansible安裝常用兩種方式,yum安裝pip程序安裝。下面我們來詳細介紹一下這兩種安裝方式。

使用 pip(python的包管理模塊)安裝

首先,我們需要安裝一個python-pip包,安裝完成以後,則直接使用pip命令來安裝我們的包,具體操作過程如下:

    yum install python-pip -y
    pip install ansible

使用 yum 安裝

    yum install ansible –y

3、密鑰部署

使用密鑰部署可以讓 center免密登錄遠程主機,該操作在管理端center進行

4、配置文件(/etc/ansible)詳解

4.1 主配置文件 ansible.cfg

ansible 有許多參數,下面我們列出一些常見的參數:

    inventory = /etc/ansible/hosts      #這個參數表示資源清單inventory文件的位置
    library = /usr/share/ansible        #指向存放Ansible模塊的目錄,支持多個目錄方式,只要用冒號(:)隔開就可以
    forks = 5       #併發連接數,默認爲5
    sudo_user = root        #設置默認執行命令的用戶
    remote_port = 22        #指定連接被管節點的管理端口,默認爲22端口,建議修改,能夠更加安全
    host_key_checking = False       #設置是否檢查SSH主機的密鑰,值爲True/False。關閉後第一次連接不會提示配置實例
    timeout = 60        #設置SSH連接的超時時間,單位爲秒
    log_path = /var/log/ansible.log     #指定一個存儲ansible日誌的文件(默認不記錄日誌)

4.2 主機&主機組定義文件 hosts

該文件保存的是一些 ansible 需要連接管理的主機列表。定義方式如下:

#1、 直接指明主機地址或主機名:
    192.168.189.134
#2、 定義一個主機組[組名]把地址或主機名加進去
    [test]
    192.168.189.134
    192.168.189.130

4.3 roles 角色目錄

5、常用命令

5.1 ansible-doc

ansible-doc 命令常用於獲取模塊信息及其使用幫助,一般用法如下:

    ansible-doc -l              #獲取全部模塊的信息
    ansible-doc MOD_NAME     #獲取指定模塊的使用幫助
    ansible-doc -s MOD_NAME     #只顯示模塊關鍵參數

ansible-doc的全部用法:

[root@server ~]# ansible-doc
Usage: ansible-doc [options] [module...]

Options:
  -h, --help            show this help message and exit  # 顯示命令參數API文檔
  -l, --list            List available modules  #列出可用的模塊
  -M MODULE_PATH, --module-path=MODULE_PATH  #指定模塊的路徑
                        specify path(s) to module library (default=None)
  -s, --snippet         Show playbook snippet for specified module(s)  #顯示playbook制定模塊的用法
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable  # 顯示ansible-doc的版本號查看模塊列表:
                        connection debugging)
  --version             show program's version number and exit
5.2 ansible

命令的具體格式如下:

ansible <host-pattern> [-f forks] [-m module_name] [-a args]

也可以通過ansible -h來查看幫助,下面我們列出一些比較常用的選項,並解釋其含義:

-a MODULE_ARGS   #模塊的參數,如果執行默認COMMAND的模塊,即是命令參數,如: “date”,“pwd”等等
-k--ask-pass #ask for SSH password。登錄密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證
--ask-su-pass #ask for su password。su切換密碼
-K--ask-sudo-pass #ask for sudo password。提示密碼使用sudo,sudo表示提權操作
--ask-vault-pass #ask for vault password。假設我們設定了加密的密碼,則用該選項進行訪問
-B SECONDS #後臺運行超時時間
-C #模擬運行環境並進行預運行,可以進行查錯測試
-c CONNECTION #連接類型使用
-f FORKS #並行任務數,默認爲5
-i INVENTORY #指定主機清單的路徑,默認爲/etc/ansible/hosts
--list-hosts #查看有哪些主機組
-m MODULE_NAME #執行模塊的名字,默認使用 command 模塊,所以如果是隻執行單一命令可以不用 -m參數
-o #壓縮輸出,嘗試將所有結果在一行輸出,一般針對收集工具使用
-S #用 su 命令
-R SU_USER #指定 su 的用戶,默認爲 root 用戶
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪個用戶,默認爲 root 用戶
-T TIMEOUT #指定 ssh 默認超時時間,默認爲10s,也可在配置文件中修改
-u REMOTE_USER #遠程用戶,默認爲 root 用戶
-v #查看詳細信息,同時支持-vvv-vvvv可查看更詳細信息

5.3 ansible-playbook

該命令用來執行劇本

默認爲10s,也可在配置文件中修改

-u REMOTE_USER #遠程用戶,默認爲 root 用戶
-v #查看詳細信息,同時支持-vvv-vvvv可查看更詳細信息

5.3 ansible-playbook

該命令用來執行劇本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章