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
下一篇 2018-01-14

相關推薦

  • Linux網絡配置

    Linux網絡基礎配置 將Linux主機接入到網絡,需要配置網絡相關設置。 一般包括如下內容:     主機名     IP/netmask     路由:默認網關     DNS服務器  …

    Linux干貨 2016-09-09
  • 網絡班N22期第六周博客作業

    請詳細總結vim編輯器的使用并完成以下練習題 打開文件: ~]# vim [options] [file ..]       +#:打開文件后,直接讓光標處于第#行       +/PART…

    Linux干貨 2016-09-26
  • 磁盤分區

      1、創建一個10G分區,并格式化為ext4文件系統;    (1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;   (2)掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳 第一步:創建一個10G的分區     [r…

    Linux干貨 2016-12-18
  • N21第五周

    1.顯示/boot/grub2/grub.cfg中以至少一個空白字符開頭的行; ]# grep '^[[:space:]]\+' /boot/grub2/grub.cfg 2.顯示/etc/rc.d/init.d/functions文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; ]#…

    Linux干貨 2016-08-15
  • rsyslog將日志記錄于MySQL中

    數據庫服務器:CentOS7 192.168.119.159   日志:CentOS6 192.168.119.129     準備mysql數據庫 和 用戶賬戶 [root@localhost ~]# yum install mariadb-server   [root@localhost ~]# systemctl…

    2018-02-05
  • 0811linux基礎小記(shell編程基礎)

    1.編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 #!/bin/bash echo "hostname: `hostname`" echo "OS VERSION: `cat /etc/issue`" e…

    Linux干貨 2016-08-15
欧美性久久久久