ansible批量搞機部署及常用模組(一)
什麼是ansible?
• Ansible是2013年推出的一款IT自勱化和DevOps軟
件,目前由Redhat已簽署Ansible收購協議。其是基
於Python研發,糅合了很多老運維工具的優點實現
了批量作業系統配置,批量程式的部署,批量執行命
令等功能
• ansible可以讓我們實現:
– 自動化部署APP
– 自動化管理配置項
– 自動化的持續交付
– 自動化的(AWS)於服務管理
為什麼要選擇ansible ?
• 選擇一款配置管理軟體總的來說,無外乎從以下幾點來權衡利弊
– 活躍度(社群活躍度)
– 學習成本
– 使用成本
– 編碼詫言
– 效能
– 使用是否廣泛
主機定義與分組
• 安裝好了 Ansible 之後就可以開始一些簡單的任務了
• Ansible配置檔案查詢順序
– 首先檢測 ANSIBLE_CONFIG 變數定義的配置檔案
– 其次檢查當前目彔下的 ./ansible.cfg 檔案
– 再次檢查當前使用者家目彔下 ~/ansible.cfg 檔案
– 最後檢查 /etc/ansible/ansible.cfg 檔案
• /etc/ansible/ansible.cfg 預設配置檔案路徑
實驗環境:
1 ansible1 192.168.1.10 管理機器
2 web1 192.168.1.11 託管機器
3 web2 192.168.1.12 託管機器
4 db1 192.168.1.21 託管機器
5 db2 192.168.1.22 託管機器
6 cache 192.168.1.33 託管機器
一、部署和配置
1. 在 ansible 管理機器上,配置源
yum install -y ansible
2.安裝完成以後執行,沒有報錯,正確顯示版本即可
ansible --version
ansible 的配置檔案是 ansible.cfg
ansible.cfg 的查詢順序是
1)ANSIBLE_CONFIG 變數定義的配置檔案
2 ) 當前目錄下的 ./ansible.cfg 檔案
3 ) 前使用者家目錄下 ~/ansible.cfg 檔案
4) /etc/ansible/ansible.cfg 檔案
3. ansible.cfg 中 inventony 指定主機分組檔案的路徑和地址,預設分組檔案 hosts
14 inventory = /etc/ansible/hosts //一般都和ansible.cfg在一個檔案路徑
hosts 的配置
[web]
web[1:2]
[db]
db1
db2
[app:children] #指定子組[web組和db組就是子組]
web
db
[app:vars]
ansible_ssh_user="root"
ansible_ssh_pass="123456"
[other]
cache
3.1 也可以自定義與分組
[[email protected] ~]# mkdir ooxx & cd ooxx
[[email protected] ooxx]# vim ansible.cfg //建立ansible.cfg檔案
[defaults]
inventory = hosts
host_keys_checking = False
4. 動態主機
ansible 的inventony 檔案可以是靜態也可以是指令碼(輸出格式 json)
修改 ansible.cfg
inventory = urscript
一個shell 指令碼樣例
#!/bin/bash
echo '
{
"web" : ["web1", "web2"],
"db" : ["db1", "db2"],
"other" : ["cache"]
}'
二、常用模組
1.語法格式
ansible 命令基礎
ansible 主機分組 -m 模組 -a '命令和引數'
ansible命令基礎
• ansible <host-pattern> [options]
– host-pattern 主機戒定義的分組
-M 指定模組路徑
-m 使用模組,預設 command 模組
-a or --args 模組引數
-i inventory 檔案路徑,戒可執行指令碼
-k 使用互動式登彔密碼
-e 定義變數
-v 詳紳資訊,-vvvv 開吭 debug 模式
2.ping模組(主要是檢測託管主機ssh的連通性,與 ping(ICMP)無關)
a.先修改hosts檔案這裡以cache主機為例子
[[email protected] ~]# vim /etc/ansible/hosts
[other]
cache ansible_ssh_user="root" ansible_ssh_pass="123456" ansible_ssh_port=22
b.接下來使用ping模組
[[email protected] ~]# ansible other -m ping //這裡因為other組只有cache,所以寫組或者寫主機都是可以的
cache | SUCCESS => {
"changed": false,
"ping": "pong"
}
3.authorized_key模組(批量傳遞公鑰) //做這個可以簡化後期的操作,不用像上面在主機後面加新增使用者和密碼了
a.建立金鑰對 id_rsa 是私鑰, id_rsa.pub 是公鑰
ssh-keygen -f /root/.ssh/id_rsa -N ''
b.給所有主機部署金鑰
ansible all -m authorized_key -a "user=root exclusive=true manage_dir=true key='$(< /root/.ssh/id_rsa.pub)'" -k
4.command | shell | raw 模組
command 是預設模組,沒有啟用 shell ,所有shell 相關特性命令無法使用,例如 < > | & set
raw 模組,沒有 chdir create remove 等引數,能執行大部分操作(一些古老的uliunx系統)
shell 模組,啟動 /bin/sh 執行命令,可以執行所有操作
測試
ansible cache -m command -a 'chdir=/tmp touch f1' 建立成功
ansible cache -m shell -a 'chdir=/tmp touch f2' 建立成功
ansible cache -m raw -a 'chdir=/tmp touch f3' 檔案可以建立,但無法切換目錄,檔案在使用者家目錄下生成
[[email protected] ~]# ansible cache -a 'cat /etc/passwd | wc -l' //執行失敗
[[email protected] ~]# ansible cache -m shell -a 'cat /etc/passwd | wc -l' //執行成功
5.script 模組(支援shell指令碼)
複雜操作怎麼辦,使用指令碼來解決
[[email protected] ~]# cd /etc/ansible/
[[email protected] ansible]# vim uscript.sh
#!/bin/bash
id zhang3
if [ $? != 0 ];then
useradd li4
echo 123456 |passwd --stdin li4
chage -d 0 li4 //要求li4在第一次登陸的時候必須修改密碼
fi
ansible all -m script -a "uscript.sh" //這裡指令碼是在當前路徑,可以直接相對路徑,如果不是在當前路徑需要寫絕對路徑
6.copy lineinfile replace 模組
copy 把檔案釋出到遠端其他主機上面
lineinfile 修改一個檔案的一行,以行為基礎,整行修改
replace 修改檔案的某一部分,以正則表示式匹配為基礎修改
a. 利用 copy 模組修改所有機器的 /etc/resolv.conf 為
[[email protected] ~]# vim /etc/resolv.conf
nameserver 8.8.8.8
[[email protected] ~]# ansible all -m copy -a 'src=/etc/resolv.conf dest=/etc/resolv.conf'
b. 利用 lineinfile 修改 /etc/sysconfig/network-scriopts/ifcfg-eth0(整行替換)
ONBOOT=yes|no
ansible cache -m lineinfile -a 'path=/etc/sysconfig/network-scripts/ifcfg-eth0 regexp="^ONBOOT" line="ONBOOT=\"no\""
c. 利用 replace 修改 /etc/sysconfig/network-scriopts/ifcfg-eth0 ONBOOT=no|yes(匹配什麼替換什麼)
ansible cache -m replace -a 'path=/etc/sysconfig/network-scripts/ifcfg-eth0 regexp="^(ONBOOT=).*" replace="\1\"yes\""'
7. yum 模組 installed 安裝, removed 刪除
ansible other -m yum -a 'name="lrzsz" state=removed'
ansible other -m yum -a 'name="lftp" state=removed'
ansible other -m yum -a 'name="lrzsz,lftp" state=installed'
8.service 模組 name 指定服務名稱,enabled= yes|no 設定開機啟動, state=stopped|started 啟動關閉服務
設定 chronyd 服務開啟啟動,並啟動服務
ansible other -m service -a 'name="chronyd" enabled="yes" state="started"'
9.setup 模組,檢視資訊 filter 過濾指定的關鍵字
模組
ansible-doc 檢視幫助,必須掌握
ansible-doc -l 列出所有模組
ansible-doc 模組名 檢視該模組的幫助資訊
相關推薦
ansible批量搞機部署及常用模組(一)
什麼是ansible? • Ansible是2013年推出的一款IT自勱化和DevOps軟 件,目前由Redhat已簽署Ansible收購協議。其是基 於Python研發,糅合了很多老運維工具的優點實現 了批量作業系統配置,批量程式的部署,批量執行命 令等功能 • ansib
python標準庫常用模組(一)-----------------------------time模組詳解及相關演示程式碼
要想了解time模組,我們需要首先了解一下時間的三種表現形式: 1.時間戳:當前距離1970年的秒數 2.格式化的字串:即2018年9月11日的這種表現形式 3.struct_time:元組時間,以元組的形式顯示時間,一共有九個元素 下面來介紹一下它具體的方法及示例程
ansible常用模組(一)
運維自動化發展歷程及技術應用 ansible命令執行過程 載入自己的配置檔案 預設/etc/ansible/ansible.cfg 載入自己對應的模組檔案,如command 通過ansible將模組或命令生成對應的臨時py檔案,並將該 檔案傳輸至遠端伺服器的對
Hadoop建設工具Ambari的安裝部署及完整使用(一)——介紹
一.介紹(請詳見百度百科等連結) 1.Hadoop介紹 Hadoop原本來自於谷歌一款名為MapReduce的程式設計模型包。谷歌的MapReduce框架可以把一個應用程式分解為許多平行計算指令,跨大量的計算節點執行非常巨大的資料集。Hadoop這個名字不是一個縮寫,而是一個虛構的名字
模組、包及常用模組(time/random/os/sys/shutil)
一、模組 模組的本質就是一個.py 檔案。 匯入和呼叫模組: import module from module import xx from module.xx.xx import xx as rename from module.xx.xx import * 模組呼叫時發生了三件事: i
DAY-8 Linux基礎及常用命令(4)
打開 ip地址 grep 軟件包 linux基礎 tro mks 官網 vim 一、制作swap分區(命令) swapon –s 查看當前激活狀態的swap分區 free –m 以m為單位查看分區 swapoff關閉分區 swapon打開分區 添加swap分區——mks
DAY-9 Linux基礎及常用命令(5)
mod conf 自己的路 linux操作 解包 二進制安裝 netstat iptables usr 一、Samba(類似共享網盤) 1、功能:Linux操作系統給win用戶共享文件用 2、如何部署 》》準備環境:iptables –F(清除防火墻)、systemctl
logstash部署及基本語法(二)
.com linu TE www. tput dex 格式 sea mage 一、logstash介紹 Logstash是一個開源的數據收集引擎,可以水平伸縮,而且logstash是整個ELK當中擁有最多插件的一個組件,其可以接收來自不同源的數據並統一輸入到指定的且可以是不
Learning-Python【21】:Python常用模組(4)—— re、logging、hashlib、subprocess
re 模組:與正則相關的模組 在使用 re 模組之前,需要先了解正則表示式(regular expression),描述了一種字串匹配的模式(pattern),可以用來檢查一個字串是否含有某個子字串、將匹配的子字串替換或者從某個字串中取出符合某個條件的子字串等。 import
Learning-Python【19】:Python常用模組(2)—— os、sys、shutil
os模組:與作業系統相關的模組 import os # 獲取當前的工作目錄 print(os.getcwd()) # 切換工作目錄 os.chdir(r'E:\Python\test') print(os.getcwd()) # 當前目錄, 一個點 print(o
Hadoop建設工具Ambari的安裝部署及完整使用(五)——Ambari使用之叢集解除安裝
五.Ambari使用——解除安裝叢集 方式一: ambari本身並沒有提供基於web管理端的自動化解除安裝的功能。ambari web管理端的操作更多的是實現服務或是主機的擴充套件(無法完全清除服務和主機)。因此本人通過實踐,也整理了一份手動解除安裝指令碼: 注:因為此指令碼只是根
Hadoop建設工具Ambari的安裝部署及完整使用(四)——Ambari使用之叢集建立
四.Ambari使用——建立叢集 登入並建立叢集 1) 以管理員登入ambari-server,使用者名稱和密碼預設為:admin/admin 2) 點選【Launch Install Wizard】開始安裝叢集 3) 給叢集命名
Hadoop建設工具Ambari的安裝部署及完整使用(三)——部署安裝
三.部署安裝 1.安裝Ambari-server 線上安裝 1) 在hortonworks公共資源庫,選擇ambari倉庫地址並下載 wget http://s3.amazonaws.com/public-repo-1.hortonworks.com/ambari/centos
Hadoop建設工具Ambari的安裝部署及完整使用(二)——準備工作
二.準備工作 關於linux環境建立,yum源配置等基礎系統搭建過程就不在此贅述了。以下內容完全是基於centos7環境,root使用者。 1.安裝JAVA環境 1) 下載jdk套件,此處作者使用的是:jdk1.8.0_111 (選擇合適的穩定版本即可
Python3常用語句及用法介紹(一)——print/import/賦值語句
1.print語句 ①括號括起來(自python3),逗號隔開 ②輸出時,隔開的各個字串前會自動加空格 ③需要輸出的符號可包含在字串中,也可單獨輸出,使用+號則不增加空格 ④同行列印的幾種方法 2.import語句 ①輕量化:匯入某模組的某函式 ②大塊匯入:匯入某
Python3常用資料結構及方法介紹(一)——列表
一.列表 list 1特點: ①列表可更改 ②方括號 [1, 2, 3] 2常用列表操作: ①索引: >>> list1 = [1,2,3,4,5,6,7,8,9,10] >>> list1[4] 5 ②分片: >>>
安裝JDK和Tomcat及常用命令(Linux)
檢視ip: -------------------------- ifconfig -a 配置網路選項 ------------------------ setup service network restart (配置完IP等必須重啟網路服務才生效) 檢視使用者登入資
selenium模組(一):介紹及安裝
一、介紹 selenium最初是一個自動化測試工具,而爬蟲中使用它主要是為了解決requests無法直接執行JavaScript程式碼的問題。 selenium本質是通過驅動瀏覽器,完全模擬瀏覽器的操作,比如跳轉、輸入、點選、下拉等,來拿到網頁渲染之後的結果,可支援多種瀏覽器 f
Python常用模組(1)
一、 collections 模組 python中的擴充套件資料型別 在內建資料型別(dict、list、set、tuple)的基礎上,collections模組還提供了幾個額外的資料型別:Counter、deque、defaultdict、namedtuple和OrderedDict等。 1.name
python標準庫常用模組(三)-----------------------------OS模組詳解,呼叫系統的命令
OS模組是呼叫系統命令的模組,和執行cmd的命令相似。 1.獲取當前的工作目錄:getcwd() 2.改變當前指令碼的工作目錄:chdir(path) 3.返回當前目錄:curdir() 4.獲取當前目錄的父目錄:pardir() 5.若目錄為空,則刪除,遞迴到上一