吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是Ansible

汽車電子技術(shù) ? 來源: 碼農(nóng)與軟件時代 ? 作者: 碼農(nóng)與軟件時代 ? 2023-02-15 14:06 ? 次閱讀

Ansible是一種運維自動化工具軟件,用來批量配置服務(wù)器或網(wǎng)絡(luò)設(shè)備(目標(biāo)主機)。

一、概念理解

  1. Ansible如何來連接目標(biāo)主機?

通過SSH協(xié)議進(jìn)行連接,詳細(xì)參考:SSH協(xié)議

  1. 目標(biāo)主機為何能相信Ansible,并接受其指令?

(1)Ansible知道目標(biāo)主機密碼,并通過密碼訪問。

Ansible將密碼配置在以明文的形式配置在文件(也就是hosts文件),存在安全性問題。

(2)Ansible主機生成密鑰對,并將公鑰拷貝到目標(biāo)主機。

通過ssh-copy-id命令進(jìn)行拷貝,并修改~/.ssh的目錄權(quán)限。如:

ssh-copy-id -i /root/.ssh/id_rsa.pub root@30.0.1.43

當(dāng)目標(biāo)主機較多時,這種方法也比較受限。

(3)Ansible自動化安裝配置工具

Redhat下,通過Kickstart工具進(jìn)行,可進(jìn)行大批量的認(rèn)證

  1. Ansible如何知道需要連接哪些目標(biāo)主機?

目標(biāo)主機列表定義在/etc/ansible/hosts文件,稱為 "inventory" 。定義格式為:

[webservers]
  30.0.1.234
  30.0.1.154
  1. 目標(biāo)主機上都有哪些事情需要做?

運維過程中,需要做的事情很多,如:

(1)基礎(chǔ)命令,如ls;

(2)定時任務(wù),如crontab

(3)啟停服務(wù),如service ngnix restart

(4)包管理,如apt install ansible

......

  1. Ansible如何知道做這些事(任務(wù))的?

運維人員通過兩種方式來告知Ansible做事:

一種是我們熟悉的命令行方式,類似ansible webserver -m ping,稱之**“Ad-Hoc命令”**;

一種是通過YAML語法定義要執(zhí)行的命令,稱為 “Playbook” 方式。

  1. Ansible又是如何具備做這些事的能力的?

Ansible通過 “Module” 來實現(xiàn),如command、shell、copy等等。

  1. 運維人員如何知道Ansible提供了哪些Module?

查找Ansible提供的模塊

root@linux:/etc/ansible# ansible-doc -l
a10_server                                           Manage A10 Networks AX/SoftAX/Thunder/vThunder devices' server object.                           
a10_server_axapi3                                    Manage A10 Networks AX/SoftAX/Thunder/vThunder devices                                           
......

模塊的詳細(xì)信息

root@linux:/etc/ansible# ansible-doc -s ping
- name: Try to connect to host, verify a usable python and return `pong' on success
  ping:
      data:                  # Data to return for the `ping' return value. If this parameter is set to `crash' the 
module will cause an exception.
  1. 如何讀懂PlayBook?

(1)了解YAML

PlayBook是通過YAML語法來實現(xiàn)的,詳情參考:《Yaml:數(shù)據(jù)的另一種形態(tài)》

(2)清楚PlayBook有哪些關(guān)鍵字,如何來的?

---                      #文件開始
 - hosts: 30.0.1.43       #目標(biāo)主機
  remote_user: root       #目標(biāo)主機用戶
  vars:                   #變量關(guān)鍵字
    http_port: 8088       #定義變量




  tasks:                             #任務(wù)關(guān)鍵字
    - name: create new file                     #自定義任務(wù)
      file: name=/tmp/playtest.txt state=touch  #Module file,創(chuàng)建新文件
    .......
  handlers:                                     #處理關(guān)鍵字
    - name: restart apache                      #自定義處理名稱
      service: name=httpd state=restarted       #重啟服務(wù)

說明:file、service都是module名字。

二、Ansible小示例

基礎(chǔ)環(huán)境:Ubuntu18.04 LTS

  1. 安裝ansible軟件
root@linux:/# apt install ansible
......
root@linux:/# apt install sshpass

查看ansible版本信息:

root@linux:/etc/ansible# ansible --version
ansible 2.5.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.17 (default, Sep 30 2020, 13:38:04) [GCC 7.5.0]

已生成ansible.cfg、hosts文件

root@linux:/etc/ansible# ls
ansible.cfg  hosts
  1. Ansible連通目標(biāo)主機

(1)目標(biāo)主機有兩臺,IP地址分別為:30.0.1.234、30.0.1.154

(2)配置hosts文件

root@linux:/etc/ansible# vi hosts   
[webservers]
30.0.1.234
30.0.1.154

(3)執(zhí)行ping操作,測試連接

root@linux:~# ansible webservers -m ping
The authenticity of host '30.0.1.154 (30.0.1.154)' can't be established.
ECDSA key fingerprint is SHA256:THHVZ1IfwqJk0YpV7Qk/a+ZvMds4phRQJEbrJIJFagg.
Are you sure you want to continue connecting (yes/no)? The authenticity of host '30.0.1.234 (30.0.1.234)' can't be established.
ECDSA key fingerprint is SHA256:THHVZ1IfwqJk0YpV7Qk/a+ZvMds4phRQJEbrJIJFagg.
Are you sure you want to continue connecting (yes/no)? yes
30.0.1.154 | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh: Warning: Permanently added '30.0.1.154' (ECDSA) to the list of known hosts.\\r\\nroot@30.0.1.154: Permission denied (publickey,password).\\r\\n", 
"unreachable": true
}
30.0.1.234 | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh: Host key verification failed.\\r\\n", 
"unreachable": true
}

連接失敗

(4)修改ansible.cfg配置文件,不進(jìn)行host_key的校驗

root@linux:~# vi /etc/ansible/ansible.cfg 
# uncomment this to disable SSH key host checking
host_key_checking = False
root@linux:/etc/ansible# ansible webservers -m ping
30.0.1.154 | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh: root@30.0.1.154: Permission denied (publickey,password).\\r\\n", 
"unreachable": true
}
30.0.1.234 | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh: Warning: Permanently added '30.0.1.234' (ECDSA) to the list of known hosts.\\r\\nroot@30.0.1.234: Permission denied (publickey,password).\\r\\n", 
"unreachable": true
}

依然無法連接到目標(biāo)主機,root用戶不允許進(jìn)行遠(yuǎn)程登錄

(5)修改hosts文件

root@linux:/etc/ansible# vi hosts 
[webservers]
30.0.1.234
30.0.1.154




[webservers:vars]
ansible_ssh_user=linux
ansible_ssh_pass=user@linux
ansible_become=true
ansible_become_method=su
ansible_become_user=root
ansible_become_pass=root@linux

上面配置語句的含義為:以linux用戶登錄,然后再提高權(quán)限,切換到root用戶。

(6)再次測試,連接成功

root@linux:/etc/ansible# ansible webservers -m ping
30.0.1.234 | SUCCESS => {
"changed": false, 
"ping": "pong"
}
30.0.1.154 | SUCCESS => {
"changed": false, 
"ping": "pong"
}

"pong" 表示ping成功,連接成功

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9303

    瀏覽量

    86060
  • 自動化
    +關(guān)注

    關(guān)注

    29

    文章

    5622

    瀏覽量

    79660
  • 網(wǎng)絡(luò)設(shè)備

    關(guān)注

    0

    文章

    318

    瀏覽量

    29765
  • 工具軟件
    +關(guān)注

    關(guān)注

    1

    文章

    16

    瀏覽量

    6912
收藏 人收藏

    評論

    相關(guān)推薦

    Ansible軟件平臺

    Ansible 是一個免費的用于配置和管理計算機的的軟件平臺。它集成了軟件部署,ad hoc任務(wù)執(zhí)行,和管理配置的功能。它依賴Python2.4之后的版本和通過SSH或者PowerShell管理節(jié)點
    發(fā)表于 07-18 08:24

    ansible核心程序批量部署

    ansible批量部署
    發(fā)表于 07-26 15:30

    ansible調(diào)用playbook遠(yuǎn)程mvn顯示找不到JAVA_HOME

    ansible 】關(guān)于ansible遠(yuǎn)程執(zhí)行的環(huán)境變量問題
    發(fā)表于 11-06 09:26

    ansible的工作原理和安裝

    ansible安裝(一)
    發(fā)表于 03-25 11:19

    ansible playbook+jenkins如何實現(xiàn)自動新增域名

    ansible-playbook+jenkins實現(xiàn)自動新增域名
    發(fā)表于 06-03 11:58

    ansible 某臺機器的ssh端口不是默認(rèn)端口,如何解決?

    現(xiàn)象:ansible 某臺機器的ssh端口不是默認(rèn)端口
    發(fā)表于 11-06 06:56

    ansible-first-book 自動化運維工具

    ansible-first-book 自動化運維工具
    發(fā)表于 09-08 09:31 ?5次下載

    使用用Ansible重復(fù)部署ELK STACK

    本文介紹如何使用Ansible 劇本在遠(yuǎn)程服務(wù)器上設(shè)置ELK(5.x版本)進(jìn)行開發(fā)。它將帶你完成安裝Ansible的步驟,連接到目標(biāo)服務(wù)器,執(zhí)行該劇本,并建立初始的日志流水線。 讓我們開始吧! 1.
    發(fā)表于 09-28 14:50 ?0次下載
    使用用<b class='flag-5'>Ansible</b>重復(fù)部署ELK STACK

    Ansible到底是個什么東西?

    Ansible 是一個配置管理和應(yīng)用部署工具,即在管理主機上操作一些命令就能在節(jié)點主機上進(jìn)行相應(yīng)的動作。由 Python 編寫,由模塊化組成,即執(zhí)行動作的實體,在 ansible 上都是靠著相應(yīng)
    的頭像 發(fā)表于 04-08 14:47 ?2.2w次閱讀
    <b class='flag-5'>Ansible</b>到底是個什么東西?

    Ansible入門教程如何快速了解Ansible

    頂級大牛帶你20分鐘玩轉(zhuǎn)Ansible
    的頭像 發(fā)表于 05-12 11:49 ?5178次閱讀

    一文詳解Ansible的自動化運維

    CMDB:CMDB 存儲和管理者企業(yè)IT架構(gòu)中的各項配置信息,是構(gòu)建 ITIL 項目的核心工具,運維人員可以組合 CMDB 和 Ansible,通過 CMDB 直接下發(fā)指令調(diào)用Ansible 工具集完成操作者所希望達(dá)到的目標(biāo);
    的頭像 發(fā)表于 05-19 17:06 ?4415次閱讀
    一文詳解<b class='flag-5'>Ansible</b>的自動化運維

    Ansible Container容器自動化構(gòu)建部署工具

    ./oschina_soft/ansible-container.zip
    發(fā)表于 05-11 10:15 ?1次下載
    <b class='flag-5'>Ansible</b> Container容器自動化構(gòu)建部署工具

    使用Ansible的OpenStack自動化

    通過將 Ansible Tower 與 OpenStack 集成到 Cyber Range 軟件中,我們能夠構(gòu)建一個應(yīng)用程序,為全球客戶提供按需培訓(xùn)和真實場景。將 Ansible REST API 與行動手冊集成,極大地利用了配置到更系統(tǒng)化的自動化流程所需的許多代碼。我們
    的頭像 發(fā)表于 12-21 14:12 ?1252次閱讀
    使用<b class='flag-5'>Ansible</b>的OpenStack自動化

    為什么需要用Ansible管理crontab呢?

    Ansible 是使用 Python 開發(fā)的自動化運維工具。它可以配置管理,部署軟件并編排更高級的任務(wù),例如持續(xù)部署或零停機滾動升級。
    的頭像 發(fā)表于 08-17 09:53 ?647次閱讀

    利用Ansible批量100臺服務(wù)器添加Crontab

    今天浩道跟大家分享關(guān)于Ansible自動化運維相關(guān)硬核干貨,利用Ansible批量100臺服務(wù)器添加Crontab !
    的頭像 發(fā)表于 08-19 14:24 ?688次閱讀
    三元玄空24山坐向开门| 百家乐追注法| BET365官方网| 百家乐官网算牌方| 全讯网六| 赌场百家乐官网规则| 百家乐二代皇冠博彩| 网上百家乐赌场| 平原县| 利赢百家乐现金网| 足球开户| 风水学24山看水法| 皇冠网络| 百家乐赌博规律| 川宜百家乐官网注册号| 贵宾百家乐的玩法技巧和规则| 百家乐官网国际娱乐城| 百家乐怎么才能| 百家乐官网币| 速博百家乐的玩法技巧和规则| 网上百家乐官网信誉| 全讯网zq06| 百家乐官网庄闲偏差有多大| 德州扑克概率计算器| 百家乐赌博怎么玩| 百家乐官网登封代理| 百家乐英皇赌场娱乐网规则| 百家乐官网群html| 水果机8键遥控器| JJ百家乐官网的玩法技巧和规则| 娱乐城送18| 百家乐平台导航| 任我赢百家乐官网自动投注分析系统| 威尼斯人娱乐城线上赌博| 竞咪百家乐官网的玩法技巧和规则| 大发888wf娱乐场下载| 24山方位 子孙 文昌| 冷水江市| 凯斯网百家乐的玩法技巧和规则| 豪门百家乐官网的玩法技巧和规则| 淘宝皇冠网店|