1. 程式人生 > >Ansible的部署安裝(自動化運維)

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 816 12:13 ansible-2.4.2.0-2.el7.noarch.rpm
-rw-r--r-- 1 root root   39444 816 12:13 python2-jmespath-0.9.0-5.el7.noarch.rpm
-rw-r--r-- 1 root root  750776 816 12:13 python2-passlib
-1.7.0-4.el7.noarch.rpm -rw-r--r-- 1 root root 480432 816 12:13 python-crypto-2.6.1-1.el7.x86_64.rpm -rw-r--r-- 1 root root 69940 816 12:13 python-ecdsa-0.11-3.el7.noarch.rpm -rw-r--r-- 1 root root 117360 816 12:13 python-httplib2-0.9.2-1.el7.noarch.rpm -rw-r--r-- 1 root root 1022088 816 12:13 python-paramiko-1.15.1-1.el7.noarch.rpm -rw-r--r-- 1 root root 20556 816 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 816 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)的優點,實現了批量系統配置、批量程序部署、批量