ansible

運維自動化發展歷程,ansible 命令使用

一、運維自動化發展歷程以及應用場景

1. 運維自動化發展歷程:本地部署(On-Premises)—>基礎設施即服務(IaaS)—>平臺即服務 ? ? ? ? ? ? ? ? ? ? ? ? ? ?(PaaS)—>軟件即服務(SaaS)

2. 應用場景:

(1)Dev 開發環境

使用者:程序員

功能 ? ?:程序員開發軟件測試BUG的環境

管理者:程序員(做運維少參與)

(2)測試環境

使用者:qa測試工程師

功能 ? ?:測試經過Dev環境測試通過的軟件的功能

管理者:運維(測試環境往往有多套,測試環境滿足測試功能即可)

測試人員希望測試環境有多套,多個版本同步測試

通常測試環境有多少套和產品數量保持一樣

(3)發布環境:代碼發布機,或者堡壘機

使用者:運維

功能 ? ?:發布代碼至生產環境

管理者:運維

發布機:往往需要有2臺(主備)

(4)生產環境:

使用者:運維,少數核心開發人員

功能 ? ? :對用戶提供公司產品的服務

管理者:只能是運維(生產環境服務器數量較多,需使用自動化工具)

(5)灰度環境:(生產環境的一部分)

使用者:運維

功能:在全量發布代碼前將代碼的功能面向少數人發布

案例:100臺生產服務器,先發布其中10臺,這10臺服務器就是灰度服? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? 務器

管理者:運維

二、自動化運維工具——ansible

1.運維工具:

Ansible:中小型應用環境,不需要代理

Saltstack:需要代理,執行效率更高

Puppet:功能強大,配置復雜,適合大型環境

2.Ansible的基礎:

(1)是一款由Python開發的,適合中小型環境

(2)特性:

模塊化:調用特定的模塊,完成特定任務

有Paramiko,PyYAML,Jinja2(模塊語言)三個關鍵模板

支持自定義模塊

基于Python語言實現

部署簡單,基于Python和SSH,不需要代理

安全,基于OpenSSH

支持playbook編排任務

冪等性:一個任務執行1遍和執行n遍效果一樣,不因重復執行帶來意外情況

無需要代理不依賴PKI(無需ssl)

可使用任何編程語言寫模塊

YAML格式,編排任務,支持豐富的數據結構

較強大的多層解決方案

(3)Ansible主要組成部分

1 ?ANSIBLE PLAYBOOKS:任務劇本,編排定義,Ansible任務集的配置文件,由 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Ansible順序依次執行,通常是JSON格式的YML文件

2 ? INVENTORY: ?Ansible管理主機的清單/etc/ansible/hosts

3 ? MODULES :Ansible執行命令的功能模塊,多數為內置的核心模塊,也可自定 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?義,ansible-doc -l 可查看模塊

4 ? PLUGINS :模塊功能的補充如鏈接類型插件、循環插件、變量插件、過濾插件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?等,該功能不常用

5 ?API : 供第三方程序調用的應用程序編程接口

6 ANSIBLE : 組合INVENTORY、API、MODULES、PLUGINS的綠框,可以理解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為是ansible命令工具,其為核心執行工具

7 ? Ansible命令執行來源:

USER,普通用戶,即SYSTEM ADMINISTRATOR

CMDB (資源管理系統) API調用

PUBLIC/PRIVATE CLOUD API 調用

USER —> Ansible Playbook —> Ansible

利用ansible實現管理的方式:

Ad-Hoc 即 ansible 命令,主要用于臨時命令使用場景

Ansible-playbook 主要用于長期規劃好的,大型項目的場景,需要 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有提前的規劃

8 ?Ansible-playbook(劇本)執行過程:

將已有編排的任務集寫入Ansible-Playbook

通過ansible-playbook命令分拆任何集至逐條ansible命令,按預定規則? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? 逐條執行

9 Ansible 主要操作對象:

HOSTS 主機

NETWORKING 網絡設備

10 注意事項

執行ansible的主機一般稱為主控端,中端,master或堡壘機

主控端Python版本需要2.6或以上

被控端Python版本小于2.4需要安裝python-simplejson

被控端如開啟SELinux需要安裝libselinux-python

Windows不能做為主控端

11 安裝的方式:

rpm包安裝:EPEL源

yum install ansibe

yum info ansible

1

yum install ansible

2

編譯安裝

Git方式:

git clone git://github.com/ansible/ansible.git –recursive

cd ./ansible

source ./hacking/env-setup

pip安裝:pip是安裝Python包的管理器,類似yum

12 ansible的配置文件:

/etc/ansible/ansible.cfg 主配置文件,配置ansible的工作特性

3

/etc/ansible/hosts 主機清單的配置文件

ansible的主要功能在于批量主機操作,為了便捷的使用其中的部分主 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 機,可以在inventory file中將其分組命名;而默認的inventory file ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為/etc/ansible/host

4

inventory文件遵循INI文件風格,中括號中的字符為組名。

類如:

5

/etc/ansible/roles/ 存放角色的目錄

13 程序

/usr/bin/ansible 主程序,臨時命令執行工具

/usr/bin/ansible-doc 查看配置文檔,模塊功能查看工具

/usr/bin/ansible-galaxy 下載/上傳優秀代碼或Roles模塊的官網平臺

/usr/bin/ansible-playbook 定制自動化任務,編排劇本工具

/usr/bin/ansible-pull 遠程執行命令的工具

/usr/bin/ansible-vault 文本加密工具

/usr/bin/ansible-console 基于Console界面與用戶交互的工具

14 ansible 配置文件

ansible 配置文件在/etc/ansible/ansible.cfg中

[defaults]

#inventory ? ? ? ? ? ? ? ? ? ? ? ? =/etc/ansible/hosts ? ?#主機列表配置文件

#library = /usr/share/my_modules/ ? ? ? ? ? ? ? ? ?#庫文件存放目錄

#remote_tmp =$HOME/.amsible/tmp ? #臨時的py文件存放在遠程主 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?機目錄

#local_tmp ? ?=$HOME/.ansible/tmp #本機的臨時命令執行目錄

#fork ? ? ? ? ? ?=5 ? ?#默認并發數

#sudo_user ? =root #默認sudo用戶

#ask_sudo_pass =True #每次執行ansible命令是否詢問ssh密碼

15 ansible系列命令

6

16.ansible-doc:顯示模塊幫助

格式:ansible-doc [options] [module…]

-a ? ? ? ? ? 顯示所有模塊的文檔

-l,–list 列出可用模塊

-s,–snippet 顯示指定模塊的playbook片段

類子:

ansible-doc -l 列出所有模塊

7

ansible-doc ping 查看指定的ping模塊? ? ? ? ? ? ? ? ? ??8

ansible-doc -s ping簡單查看幫助

9

3.ansible的用法:

(1)格式:ensible <host-pattern> [-m module_name] [-a args] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ?? ? ? ? ?? ?(2)選項:

–version 顯示版本

10

-m module 指定模塊,默認的模塊為command

11

-v 詳細過程 -vv -vvv更詳細的過程

12

–list-hosts 顯示主機列表,可簡寫為-list

-k ,–ask-pass ?提示連接密碼,默認key驗證

-C,–check 檢查,并不執行

-u,–user=REMOTE_USER執行遠程執行的用戶

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91094

(0)
zss123456zss123456
上一篇 2018-01-13 08:15
下一篇 2018-01-14 11:42

相關推薦

  • alias——Linux基本命令(4)

    1.     alias別名 (1)查看、設置別名 Linux系統提供了一個有用的工具叫alias,可以讓我們將一些需要頻繁使用的但又過于冗長的命令設置一個別名,這樣一來,以后只需輸入一個簡短的別名就可以達到同樣的作用。 alias顯看當前已定義的別名   使用aliasaliname=’comm…

    2017-07-13
  • 如何在微軟云上搭建mysql主從

    大家好: 今天我分享下在生產環境的微軟云服務器上如何搭建mysql主從: 環境如下圖: 我把cnux06-testing設為Mysql主服務器,暫時沒需求的cnux04-web1db2設為Mysql從服務器 1–首先要在master上開啟binlog日志功能并使主從庫中的 server-id保持不同 操作步驟如下: A: 先查看mysql的主目錄…

    Linux干貨 2017-02-14
  • 如何恢復誤刪除的rpm包命令

    如何恢復誤刪除的rpm包命令 在linux學習過程中,我們會遇到各種各樣的問題,當然,如果能夠將遇到的問題一一解決也是非常開心的,因為在解決問題的過程中我們的專業技能也得到了很大的提升。最近的測試中遇到了一個平時很少接觸的問題:如何恢復誤刪除的rpm包命令。所以覺得有必要寫下來,以防止下次出現類似的問題而不會解決。 首先模擬卸載rpm rpm -e &#82…

    2017-08-26
  • DNS域名系統

    【本文導航】DNS域名系統DNS域名系統DNS解析類型DNS查詢類型DNS服務器類型資源記錄   SOA記錄   NS記錄   MX記錄   A記錄與泛域名   PTR記錄   CNAME記錄   AAAA記錄子域區域傳…

    Linux干貨 2016-12-26
  • Linux系統操作入門(命令格式|命令幫助|基礎命令)

    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    2018-03-06
  • Linux基礎學習總結(一)

    Linux 安裝運行步驟: 進入\\172.16.0.1\python10 ? ? ? ? ?用戶名:python10 ? ? ? ? ?密碼:python10magedu 進入目錄? ?ftp://172.16.0.1/pub/ISOs/ 下載linux系統鏡像文件 ? ? ? ? ? CentOS-6.9-x86_64-bin-DVD1.iso ? ? …

    Linux干貨 2018-03-16
欧美性久久久久