Ansible的部署安裝(自動化運維)
一. ansible 簡介
Ansible 是什麼?
ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。
ansible是基於 paramiko 開發的,並且基於模組化工作,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。ansible不需要在遠端主機上安裝client/agents,因為它們是基於ssh來和遠
程主機通訊的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中大家認可度最高的,並且上手容易,學習簡單。是每位運維工程師必須掌握的技能之一。
Ansible 特點
部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作;
預設使用SSH協議對裝置進行管理;
有大量常規運維操作模組,可實現日常絕大部分操作;
配置簡單、功能強大、擴充套件性強;
支援API及自定義模組,可通過Python輕鬆擴充套件;
通過Playbooks來定製強大的配置、狀態管理;
輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
提供一個功能強大、操作性強的Web管理介面和REST API介面——AWX平臺。
安裝 Ansible
對於Ansible來說,實際批量化管理的操作都是基於 ssh 完成的。並且作為一個輕量級的自動化運維工具,它並不需要走一個C/S的模型,也不需要啟動服務,僅需要在一臺管理節點上面安裝對應的軟體即可直接使用。由於這個特性,Ansible就避免了像其他自動化運維工具那樣(如Puppet),考慮升級版本造成的影響。目前只要機器上安裝了 Python 2.6 以上版本,都可以執行Ansible。主機可以是 Red Hat, Debian, CentOS, OS X, BSD等系統,遺憾的是目前不支援Windows系統做控制主機。
二.部署Ansible
實驗環境
xiaozhuang1 主 172.25.20.11
xiaozhuang2 被控制 172.25.20.12
-rw-r--r-- 1 root root 7968876 8月 16 12:13 ansible-2.4.2.0-2.el7.noarch.rpm
-rw-r--r-- 1 root root 39444 8月 16 12:13 python2-jmespath-0.9.0-5.el7.noarch.rpm
-rw-r--r-- 1 root root 750776 8月 16 12:13 python2-passlib -1.7.0-4.el7.noarch.rpm
-rw-r--r-- 1 root root 480432 8月 16 12:13 python-crypto-2.6.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 69940 8月 16 12:13 python-ecdsa-0.11-3.el7.noarch.rpm
-rw-r--r-- 1 root root 117360 8月 16 12:13 python-httplib2-0.9.2-1.el7.noarch.rpm
-rw-r--r-- 1 root root 1022088 8月 16 12:13 python-paramiko-1.15.1-1.el7.noarch.rpm
-rw-r--r-- 1 root root 20556 8月 16 12:13 sshpass-1.05-5.el7.x86_64.rpm
然後用yum install -y * 安裝
配置ssh
因為Ansible是基於ssh來實現server的批量化處理
所以讓xiaozhuang1和xiaozhuang2之間互相通訊
[[email protected] .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
a8:d0:06:4c:b9:f4:c4:62:b9:35:60:ea:25:e1:3f:23 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| .+= |
|.=B = |
|.=oO . |
|. *o. . |
| E.+o . S |
| .oo. |
| . |
| |
| |
+-----------------+
[[email protected] .ssh]# ls
id_rsa id_rsa.pub known_hosts
[[email protected] .ssh]# ssh xiaozhuang2 #用ssh免密連線xiaozhuang2
Last login: Thu Aug 16 13:28:42 2018 from 172.25.20.250
[[email protected] ~]# 登出
Connection to xiaozhuang2 closed.
ansible的配置,配置主目錄/etc/ansible
ansible.cfg為主配置檔案。hosts定義了主機組相關的內容。
[root@xiaozhuang1 ~]# cd /etc/ansible/
[root@xiaozhuang1 ansible]# ls
ansible.cfg hosts roles
[root@xiaozhuang1 ansible]# vim ansible.cfg
[root@xiaozhuang1 ansible]#
變更目錄
126 private_key_file = /root/.ssh/id_rsa #定義ssh信任的檔案目錄
定義inventory檔案(定義主機組)
[[email protected] ansible]# vim /etc/ansible/hosts
# Ex 2: A collection of hosts belonging to the 'webservers' group
[webservers]
## alpha.example.org
## beta.example.org
172.25.20.11
172.25.20.12
測試:
[root@xiaozhuang1 ansible]# ansible webserver -m command -a 'uptime'
172.25.20.12 | SUCCESS | rc=0 >>
14:17:30 up 2:38, 2 users, load average: 0.01, 0.02, 0.05
常用Ansible模組
Ansible可以通過模組的方式來完成一些原理的管理工作,可以通過ansible-doc -l檢視到所有自帶的模組。 ansible-doc -s+模組名 可以用來檢視具體模組對應的用法。
[root@xiaozhuang1 ansible]# ansible-doc -l
[root@xiaozhuang1 ansible]# ansible-doc -s setup #檢視setup(設定)的用法
setup模組
用來收集遠端主機的基本資訊
[root@xiaozhuang1 ansible]# ansible webserver -m setup
172.25.20.12 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"172.25.20.12"
],
"ansible_all_ipv6_addresses": [
"fe80::5054:ff:fe4f:9456"
],
"ansible_apparmor": {
"status": "disabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "01/01/2011",
"ansible_bios_version": "0.5.1",
"ansible_cmdline": {
"BOOT_IMAGE": "/vmlinuz-3.10.0-514.el7.x86_64",
"LANG": "zh_CN.UTF-8",
"crashkernel": "auto",
"quiet": true,
...........
...........
"changed": false
}
ping模組
用來檢視遠端主機的執行狀態
[root@xiaozhuang1 ansible]# ansible webserver -m ping
172.25.20.12 | SUCCESS => {
"changed": false,
"ping": "pong"
}
file模組
用來設定檔案的屬性,用-a指定選項。
file模組相關選項如下:
引數
force 強制,有兩個選項:yes或no
group 定義檔案/目錄的所屬組
mode 定義檔案/目錄的許可權
owner 定義檔案/目錄的屬主
path 必選項,定義檔案/目錄的路徑
src 被連結的原始檔路徑,只應用於state=link的情況
dest 被連結到的路徑,只應用於state=link的情況
recurse 遞迴設定檔案的屬性,只對目錄有效
state 定義檔案/目錄的引數,常用引數如下:
directory:如果目錄不存在,就建立目錄
file:即使檔案不存在,也不會被建立
link:建立軟連結
hard:建立硬連結
touch:如果檔案不存在,則會建立一個新的檔案,如果檔案或目錄已存在,則更新其最後修改時間
absent:刪除目錄、檔案或者取消連結檔案
[root@xiaozhuang1 ansible]# ansible webserver -m file -a 'state=touch owner=xiaozhuang group=xiaozhuang mode=770 path=/home/mnt'
172.25.20.12 | SUCCESS => {
"changed": true,
"dest": "/home/mnt",
"gid": 1000,
"group": "xiaozhuang",
"mode": "0770",
"owner": "xiaozhuang",
"size": 0,
"state": "file",
"uid": 1000
}
在xiaozhuang2上檢視
[root@xiaozhuang2 mnt]# ll /home/mnt
-rwxrwx--- 1 xiaozhuang xiaozhuang 0 8月 16 14:44 /home/mnt
command模組
用以ssh的方式,在遠端主機上執行命令
[[email protected] ansible]# ansible webserver -m command -a 'ls /root'
172.25.20.12 | SUCCESS | rc=0 >>
anaconda-ks.cfg
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
tidb-latest-linux-amd64
tidb-latest-linux-amd64.sha256
tidb-latest-linux-amd64.tar.gz
zabbix-agent-3.4.6-1.el7.x86_64.rpm
zabbix-get-3.4.6-1.el7.x86_64.rpm
zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm
zabbix-web-3.4.6-1.el7.noarch.rpm
zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
在xiaozhuang2上
copy模組
將對應的檔案複製至遠端主機
引數 說明
backup 將原始檔備份。
dest 必選項。要將原始檔複製到的遠端主機的絕對路徑,如果原始檔是一個目錄,那麼該路徑也必須是個目錄
directory_mode 遞迴設定目錄的許可權,預設為系統預設許可權
force 如果目標主機包含該檔案,但內容不同,如果設定為yes,則強制覆蓋,如果為no,則只有當目標主機的目標位置不存在該檔案時,才複製。預設為yes
src 被複制到遠端主機的本地檔案,可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,它將遞迴複製。在這種情況下,如果路徑使用“/”來結尾,則只複製目錄裡的內容,如果沒有使用“/”來結尾,則包含目錄在內的整個內容全部複製,類似於rsync。
[root@xiaozhuang1 ansible]# ansible webserver -m copy -a 'dest=/mnt src=/mnt/'
172.25.20.12 | SUCCESS => {
"changed": false,
"dest": "/mnt/",
"src": "/mnt/"
}
更多模組
ansible-doc -l可以羅列ansible所有模組名稱
ansible-doc -s 模組名,可以用來檢視對應模組的實際用法。
相關推薦
Ansible的部署安裝(自動化運維)
一. ansible 簡介 Ansible 是什麼? ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。
部署 SaltStack 自動化運維工具,並簡易批量安裝 httpd 服務
SaltStack 介紹 SaltStack 是一個基於 Python 開發的一套架構配置管理工具,採用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ訊息佇列通訊。master監聽4505和4506埠,4505為mas
如何高效地遠端部署?自動化運維利器 Fabric 教程
關於 Python 自動化的話題,在上一篇文章中,我介紹了 Invoke 庫,它是 Fabric 的最重要元件之一。Fabric 也是一個被廣泛應用的自動化工具庫,是不得不提的自動化運維利器,所以,本文將來介紹一下它。 Fabric 主要用在應用部署與系統管理等任務的自動化,簡單輕量級,提供有豐富的 SSH
自動化運維之Ansible的安裝部署與命令模塊
image 核心 img 任務 安裝epel源 接插件 water func 添加 Ansible簡介 Ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系
自動化運維之ansible-安裝部署與基礎命令篇
ip地址 cksum keygen python 了解 success 系統 ron pytho 一、Ansible簡介 Ansible基於Python語言開發,集合了眾多優秀運維工具的優點,實現了批量運行命令、部署程序、配置系統等功能。 二、安裝部署Ansible服務 A
自動化運維之詳細部署安裝Ansible服務(超簡單)
信息 ges 圖片 安裝epel源 python開發 epel源 登陸 監控 系統配置 簡介: ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批
安裝部署自動化運維之Ansible
service firewall sta systemctl 方式安裝 bin src 管理 release 初步了解Ansibleansible基於Python開發,,集合了眾多運維工具的優點,實現了批量運行命令,部署程序,配置系統等功能。默認通過SSH協議進行遠程命令執
自動化運維之Ansible安裝部署
Ansible核心元件ansible可以看做是一種基於模組進行工作的框架結構,批量部署能力就是有ansible所執行的模組實現的。簡而言之ansible是基於“模組”完成各種“任務”的。結構圖如下所示 ansible元件由如下六部分組成Ansible core 核心引擎 Host inventory
SUSE Linux 11編譯安裝Ansible自動化運維管理工具
ansible 運維 ANSIBLE Ansible是一個使用Python語言開發的Linux平臺下的自動化運維管理工具,它支持遠程管理絕大多數Linux或Windows主機。Ansible默認通過SSH協議管理機器,即只需要在管理主機上安裝Ansible就可以遠程管理Linux主機,被托管節點主機不
自動化運維工具安裝部署 chef (一) - 測試環境配置
系統/運維 Linux 最近一直在做tensorflow的研究,看書看視頻群內討論什麽的,有些頭大,抽空刷朋友圈看到有朋友一直關註devops,市面上也有相關人員需求,索性抽空玩一個自動化運維的產品chef,加上之前也有開發過相關運維產品,對比下rundeck,看看這個有什麽好玩。官網https://
自動化運維工具安裝部署 chef (四) - node的安裝
系統/運維 Linux 原文在此https://docs.chef.io/nodes.html節點分好幾種又加了一臺機器[root@chefnode ~]# cat /etc/hosts先確保hosts裏面都有解析[root@chefserver chef]# scp chefdk-2.4.17-1.
自動化運維工具安裝部署 chef (二) - server的安裝
系統/運維 Linux 經過一個晚上的下載,終於下載好了安裝前先抓個虛擬機鏡像原始文檔https://docs.chef.io/install_server.html開始安裝安裝完成初始化下[root@chef_server chef]# chef-server-ctl reconfigure初始化失
自動化運維工具安裝部署 chef (三) - workstation的安裝
系統/運維 Linux workstation原文https://docs.chef.io/workstation.html[root@chef_server etc]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost
自動化運維工具安裝部署 chef (八)- 分發配置策略
系統/運維 Linux 如果沒有生成chef-repo目錄的話到workstation 先clone一個git 初始目錄git clone git://github.com/opscode/chef-repo.git這裏我已經生成過了knife cookbook site install userwo
自動化運維工具Ansible實戰(一)簡介和部署
Ansible 自動化運維 一、Ansible的介紹 Ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點。實現了批量系統配置、批量程序部署、批量運行命令等功能。Ansible是基於模塊工作的,本身沒
linux自動化運維平臺ansible部署
linux自動化運維 ansible 前言 運維的發展方向,集中化,自動化,標準化,虛擬化,分布式。本文展示的就是自動化運維的發展方向的工具:ansible。ansible有很多優點,僅需要ssh和python即可使用,不需要客戶端,功能強大,模塊豐富,上手容易門檻低,基於python開發,更容易做二
自動化運維之kickstart自動化部署安裝操作系統
自動化運維之kickstart第1章 簡介1.1 PXE簡介q PXE是預啟動執行環境,全名是Pre-boot Execution Environmentq 通過網絡接口啟動計算機,不需要依賴本地存儲設備或本地已安裝的操作系統q 由Intel和Systemsoft公司於1999年9月20日公布的技術q
自動化運維之Ansible服務部署
基礎 cat body openstac -m release firewall 應用領域 引擎 Ansible簡介 Ansible使用Python語言開發,巧妙的設計、實現了簡單易用、功能強大的自動化管理工具。目前它已經廣泛應用於各種規模、各個領域的企業。 Ansib
部署自動化運維服務——Ansible
部署 python開發 生成密鑰 ssh-key 以及 幫助 img 運維人員 容易 由於互聯網的快速發展導致產品更新換代速度逐漸加快,運維人員每天都要進行大量的維護操作,仍舊按照傳統方式進行維護會使得工作效率低下。部署自動化運維就成為了首先,自動化運維能夠幫助工程師盡可能
自動化運維之Ansible安裝及命令使用
doc 平臺 協議 rest api 交互 指令 a10 大量 pro Ansible介紹 ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量