站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        Ansible是什么

        Ansible 簡單的說是一個(gè)配置管理系統(tǒng)(configuration management system)。你只需要可以使用 ssh 訪問你的服務(wù)器或設(shè)備就行。它也不同于其他工具,因?yàn)樗褂猛扑偷姆绞剑皇窍?puppet 等 那樣使用拉取安裝agent的方式。你可以將代碼部署到任意數(shù)量的服務(wù)器上。

        Ansible能做什么

        ansible可以幫助我們完成一些批量任務(wù),或者完成一些需要經(jīng)常重復(fù)的工作。

        比如:同時(shí)在100臺服務(wù)器上安裝nginx服務(wù),并在安裝后啟動(dòng)它們。

        比如:將某個(gè)文件一次性拷貝到100臺服務(wù)器上。

        比如:每當(dāng)有新服務(wù)器加入工作環(huán)境時(shí),你都要為新服務(wù)器部署某個(gè)服務(wù),也就是說你需要經(jīng)常重復(fù)的完成相同的工作。 這些場景中我們都可以使用到ansible。

        Ansible特性

        ? 模塊化:調(diào)用特定的模塊,完成特定任務(wù)
        ? 有Paramiko,PyYAML,Jinja2(模板語言)三個(gè)關(guān)鍵模塊
        ? 支持自定義模塊
        ? 基于Python語言實(shí)現(xiàn)
        ? 部署簡單,基于python和SSH(默認(rèn)已安裝),agentless
        ? 安全,基于OpenSSH
        ? 支持playbook編排任務(wù)
        ? 冪等性:一個(gè)任務(wù)執(zhí)行1遍和執(zhí)行n遍效果一樣,不因重復(fù)執(zhí)行帶來意外情況
        ? 無需代理不依賴PKI(無需ssl)
        ? 可使用任何編程語言寫模塊
        ? YAML格式,編排任務(wù),支持豐富的數(shù)據(jù)結(jié)構(gòu)
        ? 較強(qiáng)大的多層解決方案

        Ansible架構(gòu)

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        Ansible工作原理

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        Ansible主要組成部分功能說明

         ? PLAYBOOKS:
                    任務(wù)劇本(任務(wù)集),編排定義Ansible任務(wù)集的配置文件,由Ansible順序依次執(zhí)行,通常是JSON格式的YML文件
        ? INVENTORY:
                    Ansible管理主機(jī)的清單/etc/anaible/hosts
        ? MODULES:
                    Ansible執(zhí)行命令的功能模塊,多數(shù)為內(nèi)置的核心模塊,也可自定義,ansible-doc –l 可查看模塊
        ? PLUGINS:
                    模塊功能的補(bǔ)充,如連接類型插件、循環(huán)插件、變量插件、過濾插件等,該功能不常用
        ? API:
                    供第三方程序調(diào)用的應(yīng)用程序編程接口
        ? ANSIBLE:
                    組合INVENTORY、 API、 MODULES、PLUGINS的綠框,可以理解為是ansible命令工具,其為核心執(zhí)行工具

        注意事項(xiàng)

        ? 執(zhí)行ansible的主機(jī)一般稱為主控端,中控,master或堡壘機(jī)
        ? 主控端Python版本需要2.6或以上
        ? 被控端Python版本小于2.4需要安裝python-simplejson
        ? 被控端如開啟SELinux需要安裝libselinux-python
        ? windows不能做為主控端

        安裝Ansible

        以CentOS為例

        安裝環(huán)境查看

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        安裝

        yum -y install ansible

        查看版本

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        Ansible 功能詳解

        配置文件

        配置文件或指令 描述
        /etc/ansible/ansible.cfg    主配置文件,配置ansible工作特性
        /etc/ansible/hosts  主機(jī)清單
        /etc/ansible/roles/ 存放角色的目錄
        /usr/bin/ansible    主程序,臨時(shí)命令執(zhí)行工具
        /usr/bin/ansible-doc    查看配置文檔,模塊功能查看工具
        /usr/bin/ansible-galaxy 下載/上傳優(yōu)秀代碼或Roles模塊的官網(wǎng)平臺
        /usr/bin/ansible-playbook  定制自動(dòng)化任務(wù),編排劇本工具
        /usr/bin/ansible-pull  遠(yuǎn)程執(zhí)行命令的工具
        /usr/bin/ansible-vault  文件加密工具
        /usr/bin/ansible-console    基于Console界面與用戶交互的執(zhí)行工具

        Ansible 配置文件

         Ansible 配置文件/etc/ansible/ansible.cfg (一般保持默認(rèn))
        ? [defaults]
        ? #inventory = /etc/ansible/hosts # 主機(jī)列表配置文件
        ? #library = /usr/share/my_modules/ # 庫文件存放目錄
        ? #remote_tmp = $HOME/.ansible/tmp #臨時(shí)py命令文件存放在遠(yuǎn)程主機(jī)目錄
        ? #local_tmp = $HOME/.ansible/tmp # 本機(jī)的臨時(shí)命令執(zhí)行目錄
        ? #forks = 5 # 默認(rèn)并發(fā)數(shù)
        ? #sudo_user = root # 默認(rèn)sudo 用戶
        ? #ask_sudo_pass = True #每次執(zhí)行ansible命令是否詢問ssh密碼
        ? #ask_pass = True      #連接時(shí)提示輸入ssh密碼
        ? #remote_port = 22    #遠(yuǎn)程主機(jī)的默認(rèn)端口,生產(chǎn)中這個(gè)端口應(yīng)該會不同
        ? #log_path = /var/log/ansible.log #日志
        ? #host_key_checking = False # 檢查對應(yīng)服務(wù)器的host_key,建議取消注釋。也就是不會彈出

        試驗(yàn)規(guī)劃,兩臺主機(jī)192.168.56.11作為主控端,192.168.56.12被控端

        修改配置文件/etc/ansible/hosts

        [webservers]
        192.168.56.11
        192.168.56.12

        webserves代表一個(gè)組,下面有兩臺主機(jī)

        執(zhí)行命令

        ansible 192.168.56.11 -m ping

        執(zhí)行失敗

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        非常抱歉哦,竟然是失敗的。為什么呢?Ansible是基于ssh進(jìn)行工作的,那么當(dāng)ssh一臺遠(yuǎn)程主要的時(shí)候,是不是需要輸入密碼呢?可是這一條指令并沒有提示輸入口令呢

        加參數(shù)-k輸入密碼

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        設(shè)置免密碼登錄(參考如下)

        —————————-參考如下—————————-

        兩臺Linux主機(jī)需要從其中一臺ssh至另外一臺需要手動(dòng)輸入密碼,通過以下設(shè)置免密碼登錄

        生成秘鑰

        ssh-keygen -t rsa

        會在文件夾/root/.ssh下面生產(chǎn)公鑰和私鑰

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        把秘鑰復(fù)制至需要免密登錄的主機(jī),第一次拷貝需要輸入一次密碼

        ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.1.3.4

        會在遠(yuǎn)程主機(jī)的文件夾/root/.ssh下面自動(dòng)生成文件authorized_keys 文件內(nèi)容為公鑰id_ras.pub一樣

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        也可以直接把公鑰復(fù)制編輯需要遠(yuǎn)程登錄的主機(jī)的/root/.ssh/authorized_keys文件

        驗(yàn)證能否免密登錄

        ssh 10.1.3.4

        —————————-到此位置—————————-

        Ansible自動(dòng)化運(yùn)維安裝與簡單使用

        就不會提示需要輸入密碼了

        Ansible常用命令語法

        ansible <host-pattern> [-m module_name] [options]
        指令 匹配規(guī)則的主機(jī)清單 -m 模塊名 選項(xiàng)
         
        –version 顯示版本
        -a 模塊參數(shù)(如果有)
        -m module 指定模塊,默認(rèn)為command
        -v 詳細(xì)過程 –vv -vvv更詳細(xì)
        –list-hosts 顯示主機(jī)列表,可簡寫–list
        -k, –ask-pass 提示連接密碼,默認(rèn)Key驗(yàn)證
        -K,–ask-become-pass 提示使用sudo密碼
        -C, –check 檢查,并不執(zhí)行
        -T, –timeout=TIMEOUT 執(zhí)行命令的超時(shí)時(shí)間,默認(rèn)10s
        -u, –user=REMOTE_USER 執(zhí)行遠(yuǎn)程執(zhí)行的用戶
        -U, SUDO_USER, –sudo-user 指定sudu用戶
        -b, –become 代替舊版的sudo 切換

        ansible-doc: 顯示模塊幫助
        ansible-doc [options] [module…]
         
        -a 顯示所有模塊的文檔
        -l, –list 列出可用模塊
        -s, –snippet 顯示指定模塊的簡要說明
         
        例子:#ansible-doc ping
         
        由于ansible的模塊有1378個(gè)(2.4.2.0),并且一直在持續(xù)更新。因此,這個(gè)指令必須要掌握的。
        #ansible-doc -l |wc -l
        1378

        Ansible 的命令執(zhí)行過程以 ansible all -m command -a ‘ls -l /’ -vvv 這條命令為例,根據(jù)顯示的信息時(shí)行解讀

        1. 加載自己的配置文件,默認(rèn)/etc/ansible/ansible.cfg
            Using /etc/ansible/ansible.cfg as config file
         
        2.匹配主機(jī)清單
            Parsed /etc/ansible/hosts inventory source with ini plugin
         
        3. 加載指令對應(yīng)的模塊文件,如command,生成.py的文件到本機(jī)的臨時(shí)目錄,這個(gè)目錄就是在/etc/ansible/ansible.cfg定義的
            Using module file /usr/lib/python2.7/site-packages/ansible/modules/commands/command.py
            PUT /tmp/tmp4JvsLH TO /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py
         
        4. 通過ansible將模塊或命令生成對應(yīng)的臨時(shí)py文件,并將該文件傳輸至遠(yuǎn)程服務(wù)器的對應(yīng)執(zhí)行用戶$HOME/.ansible/tmp/ansible-tmp-數(shù)字/XXX.PY文件,
            這個(gè)目錄就是在/etc/ansible/ansible.cfg定義的
            ( umask 77 && mkdir -p “` echo /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861 `” ….)
            sftp> put /tmp/tmp4JvsLH /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.pyn’
         
        5. 給文件+x 權(quán)限
            ‘chmod u+x /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/ /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py && sleep 0’
         
        6. 執(zhí)行并返回結(jié)果
            ‘/usr/bin/python /root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/command.py;
         
        7. 刪除臨時(shí)py文件,sleep 0退出
            rm -rf “/root/.ansible/tmp/ansible-tmp-1517301292.6-155771303493861/” > /dev/null 2>&1 && sleep 0
         
        8.斷開遠(yuǎn)程主機(jī)連接
            ‘Shared connection to 7-db-3.hunk.tech closed.rn’)

        執(zhí)行結(jié)果狀態(tài)

         ? 綠色:執(zhí)行成功并且不需要做改變的操作
         
        ? ×××:執(zhí)行成功并且對目標(biāo)主機(jī)做變更
         
        ? 紅色:執(zhí)行失敗

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品国产毛片一区二区无码| 无夜精品久久久久久| 国产精品福利片免费看| 午夜精品久久久久久久久| 国产精品视频不卡| 国产亚洲福利精品一区| 亚洲国产成人精品无码区在线观看| 国内精品伊人久久久久影院对白| 久久91精品国产91久久麻豆| 日韩AV无码精品人妻系列| 三级国产精品| 国产精品美女免费视频观看| 91精品国产综合久久久久久| 无码人妻精品一区二区三区久久久 | 国产伦精品一区二区三区视频猫咪 | 惠民福利中文字幕人妻无码乱精品 | 国产亚洲精品无码成人| 亚洲&#228;v永久无码精品天堂久久| 国产精品白丝AV嫩草影院| 亚洲精品高清视频| 精品视频一区二区三区在线观看| 国产精品多人p群无码| 精品日韩亚洲AV无码| 久久精品无码专区免费青青| 亚洲av午夜福利精品一区人妖| 亚洲国产精品一区二区第四页| 国产免费伦精品一区二区三区| 成人国产精品动漫欧美一区| 国产精品青草视频免费播放| 国产精品日韩深夜福利久久| 精品无码久久久久久久久久| 欧美精品色精品一区二区三区| 青青青青久久精品国产h久久精品五福影院1421 | 500av大全导航精品| 国产精品免费高清在线观看| 国内精品久久久久影院优| 国精品午夜福利视频不卡| 91精品国产高清久久久久久io| 国产亚洲美女精品久久久久狼| 久久精品嫩草影院| 国产成人久久久精品二区三区|