ansible使用筆記(一)ansible安裝及常用配置說明

目錄
一、ansible介紹
二、ansible安裝及常用配置說明

一、ansible介紹
ansible是2013年推出的一款I(lǐng)T自動(dòng)化和DevOps軟件冗懦,2015年被RedHat收購。是基于Python研發(fā)仇祭,糅合很多老運(yùn)維工具的優(yōu)點(diǎn)披蕉,實(shí)現(xiàn)了批量操作系統(tǒng)配置,批量程序部署乌奇,批量運(yùn)行命令等功能

ansible可以實(shí)現(xiàn)

  • 自動(dòng)化部署APP
  • 自動(dòng)化管理配置項(xiàng)
  • 自動(dòng)化持續(xù)交付
  • 自動(dòng)化(AWS)云服務(wù)管理

ansible優(yōu)點(diǎn)

  • 主從工作模式 只需要SSH和Python即可使用没讲,無客戶端
  • ansible功能強(qiáng)大,支持自定義模塊 模塊豐富 支持playbook
  • 上手容易礁苗,門檻低
  • 基于Python開發(fā)爬凑,做二次開發(fā)更容易
  • 使用公司比較多,社區(qū)活躍

ansible特性

  • 模塊化設(shè)計(jì),調(diào)用特定的模塊完成特定任務(wù)
  • 基于Python語言實(shí)現(xiàn)
  • paramiko
  • PyYAML(半結(jié)構(gòu)化語言)
  • Jinja2
  • 其模塊支持JSON等標(biāo)準(zhǔn)輸出格式,可以采用任何編程語言重寫

管理主機(jī)

  • Ansible可以在安裝了Python 2(2.7版)或Python 3(3.5版及更高版本)的任何計(jì)算機(jī)上運(yùn)行试伙。這包括Red Hat嘁信,Debian,CentOS疏叨,macOS潘靖,任何BSD等≡槁控制節(jié)點(diǎn)不支持Windows
  • ansible 使用以下模塊,都需要安裝
    paramiko
    PyYAML(半結(jié)構(gòu)化語言)
    Jinja2
    httplib2
    six

對(duì)于被托管的主機(jī)

  • ansible默認(rèn)通過SSH協(xié)議管理機(jī)器
  • 被管理主機(jī)要開啟SSH服務(wù),允許ansible主機(jī)登錄
    在托管節(jié)點(diǎn)上也需要安裝Python 2(2.7版)或Python 3(3.5版及更高版本)
    如果托管節(jié)點(diǎn)上開啟中了SElinux,需要安裝libselinux-Python

部署證書文件
ansible 是通過SSH在遠(yuǎn)程執(zhí)行命令的,SSH遠(yuǎn)程執(zhí)行命令必須通過認(rèn)證才行,密碼寫入配置文件安生性很差,一般會(huì)使用key方式認(rèn)證,給所有主機(jī)公鑰
沒有秘鑰命令執(zhí)行會(huì)出錯(cuò)

二卦溢、ansible安裝及常用配置說明
環(huán)境準(zhǔn)備
6臺(tái)主機(jī),1臺(tái)管理主機(jī),5臺(tái)托管主機(jī),以實(shí)現(xiàn)批量程序部署,批量運(yùn)行命令等功能,具體要求如下表

ansible常用配置參數(shù)說明

  • ansible配置文件查找順序

  • 首先檢測 ANSIBLE_CONFIG變量定義的配置文件

  • 其次檢查當(dāng)前目錄下 ./ansible.cfg文件

  • 再次檢查當(dāng)前用記家目錄下 ~/ansible.cfg 文件

  • 最后檢查/etc/ansible/ansible.cfg文件

  • /etc/ansible/ansible.cfg是ansible默認(rèn)配置文件路徑

  • /etc/ansible/hosts 是ansible默認(rèn)host文件路徑

ansible.cfg配置文件
inventory 定義托管主機(jī)地址配置host文件路徑名 指定的配置文件,寫入遠(yuǎn)程主機(jī)的地址
host_key_checking = False ssh主機(jī)key驗(yàn)證配置參數(shù)
-如果為False,不需要輸入yes
-如果為Ture,等待輸入yes
ansible_ssh_prot
ssh端口號(hào):如果不是默認(rèn)的端口號(hào),通過此變量設(shè)置
ansible_ssh_user
默認(rèn)的ssh用戶名
ansible_ssh_pass
ssh密碼(這種方式并不安全,強(qiáng)烈建議使用SSH密鑰)
ansible_ssh_private_key_file
ssh使用的私鑰文件,適用于有多個(gè)密鑰,而你不想使用SSH代理的情況

ansible 托管主機(jī)地址配置host文件
格式
# 表示注釋
[組名稱]
主機(jī)名稱或IP地址, 其它參數(shù)

  • vars變量定義,用于組名后面
    例如
    [all:vars] //指定所有組key的存放位置
    ansible_ssh_private_key_file="/root/keyfile/id_dsa"
  • children子組定義,用于引用其它組名稱
    例如
    [app:children] //其中web、db分別為不同分組
    web
    db
[root@ansible myansible]# cat myhost 
[app1]
web1
db1
[app2]
web2
db2
[app:children]
app1
app2
[other]
cache
[all:vars]
ansible_ssh_private_key_file="/root/keyfile/id_dsa"
  • ansiblew命令基礎(chǔ)
    列出要執(zhí)行主機(jī)
    ansible all --list-hosts
  • 批量檢測主機(jī)
    ansible all -m ping -k
  • ansible主機(jī)集合 -m 模塊名稱 -a 模塊參數(shù)
    主機(jī)集合 主機(jī)名或分組名,多個(gè)使用"逗號(hào)"分隔
    -m 模塊名稱,默認(rèn)command模塊
    -a or --args模塊參數(shù)
    其它參數(shù)
    -i inventory文件路徑,或可執(zhí)行腳本
    -k 使用交互式登陸密碼
    -e 定義變量
    -v 顯示詳細(xì)信息

1 )管理主機(jī) 安裝EPEL源 EPEL源包含上面ansible所需要的所有模塊

[root@ansible ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@ansible ~]# yum clean all
[root@ansible ~]# yum repolist

2)安裝ansible

[root@ansible ~]# yum -y install ansible              
[root@ansible ~]# ansible --version  //查看ansible版本
ansible 2.9.13

3)生成秘鑰 配置免秘登陸托管主機(jī)

[root@ansible ~]# vim /etc/ansible/hosts
[web]
web1
web2
[db]
db[1:2]
[other]
cache

[root@ansible ~]# ssh-keygen  //一路回車生成秘鑰
[root@ansible .ssh]# ansible all -m ping  //測試 失敗
web1 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", 
    "unreachable": true
}
db1 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", 
    "unreachable": true
}
......

[root@ansible .ssh]# for i in {40..45};do ssh-copy-id root@192.168.4.1$i; done   //使用for循環(huán)給托管主機(jī)傳送秘鑰 免秘登陸
[root@ansible .ssh]# ansible all -m ping  //成功
db2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
db1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
......

4 )指定秘鑰存放位置

[root@ansible ~]# mkdir keyfile/
[root@ansible ~]# mv .ssh/id_dsa keyfile/  //改變key的存放位置
[root@ansible ~]# ansible all -m ping    //失敗
web1 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", 
    "unreachable": true
}
......

[root@ansible ~]# cat /etc/ansible/hosts
[web]
web1
web2
[db]
db[1:2]
[other]
cache
[all:vars]
ansible_ssh_private_key_file="/root/keyfile/id_dsa"   //指定key的存放位置
[root@ansible ~]# ansible all -m ping   //成功
db2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
......

[root@ansible ~]# mkdir myansible
[root@ansible ~]# cd myansible/
[root@ansible myansible]# vim myhost
[app1]
web1
db1
[app2]
web2
db2
[app:children]
app1
app2
[other]
cache
[all:vars]
ansible_ssh_private_key_file="/root/keyfile/id_dsa"

[root@ansible myansible]# vim ansible.cfg
[defaults]
inventory = myhost
host_key_checking = False

[root@ansible myansible]# ls
ansible.cfg  myhost

[root@ansible myansible]# ansible app1 -m ping
web1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
db1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

[root@ansible myansible]# ansible app -m ping
db1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
......

5 ) 測試ansible.cfg文件

[root@ansible myansible]# ansible app --list-hosts   //首先檢查本目錄 下ansible.cfg文件 成功
  hosts (4):
    web1
    db1
    web2
    db2
[root@ansible myansible]# cd ..
[root@ansible ~]# ansible app --list-hosts    //本目錄下無ansible.cfg文件  默認(rèn)的/etc/ansible/hosts 也沒有定義app 組 報(bào)錯(cuò)
[WARNING]: Could not match supplied host pattern, ignoring: app
[WARNING]: No hosts matched, nothing to do
  hosts (0):
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市既绕,隨后出現(xiàn)的幾起案子啄刹,更是在濱河造成了極大的恐慌,老刑警劉巖凄贩,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件誓军,死亡現(xiàn)場離奇詭異,居然都是意外死亡疲扎,警方通過查閱死者的電腦和手機(jī)昵时,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椒丧,“玉大人壹甥,你說我怎么就攤上這事『” “怎么了句柠?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棒假。 經(jīng)常有香客問我溯职,道長,這世上最難降的妖魔是什么帽哑? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任谜酒,我火速辦了婚禮,結(jié)果婚禮上妻枕,老公的妹妹穿的比我還像新娘僻族。我一直安慰自己,他們只是感情好屡谐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布述么。 她就那樣靜靜地躺著,像睡著了一般愕掏。 火紅的嫁衣襯著肌膚如雪碉输。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天亭珍,我揣著相機(jī)與錄音敷钾,去河邊找鬼。 笑死肄梨,一個(gè)胖子當(dāng)著我的面吹牛阻荒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播众羡,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼侨赡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起羊壹,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤蓖宦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后油猫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稠茂,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年情妖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睬关。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毡证,死狀恐怖电爹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情料睛,我是刑警寧澤丐箩,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站恤煞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苔货,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诈茧。 院中可真熱鬧敢会,春花似錦这嚣、人聲如沸姐帚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘我。三九已至涂滴,卻和暖如春柔纵,著一層夾襖步出監(jiān)牢的瞬間搁料,已是汗流浹背郭计。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庐杨,地道東北人灵份。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像氛什,于是被迫代替她去往敵國和親屉更。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瑰谜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348