溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ansible的安裝與使用

發(fā)布時間:2020-06-20 14:40:33 來源:網(wǎng)絡 閱讀:700 作者:ping9527 欄目:開發(fā)技術(shù)

    ansible作為輕量級的運維管理工具,目前已被廣泛使用,其已被redhat收購,

未來極為可能裝入base倉庫。

  • ansible的安裝

    目前由于ansible位于epel倉庫,我們需要創(chuàng)建epel源。方法如下:               1.wget https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/e/epel-release-7-9.noarch.rpm(此地址每隔一段時間會發(fā)生變化,如果以后發(fā)現(xiàn)該地址不正確,進入https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/e/去查找相應的資源)

          2.rpm -ivh epel-release-7-9.noarch.rpm

        3.yum clean all

        4.yum -y install ansible安裝成功

    基本信息查看

        1.yum info ansible 查看ansible基本介紹

        2.rpm -qi ansible  查看程序包的信息

        3.rpm -ql ansible|less  查看支持的模塊

    配置文件解讀

        /etc/ansible/ansible.cfg  主配置文件,配置ansible程序的工作特性

        /etc/ansible/hosts        主機清單,各主機的分類的及IP地址等信息

        /etc/ansible/roles        存放角色的目錄

        /usr/bin/ansible          主程序

        /usr/bin/ansible-doc      查看配置文檔

        /usr/bin/ansible-galaxy

        /usr/bin/ansible-playbook 輔助工具:劇本

        /usr/bin/ansible-pull     取配置

     支持的模塊的介紹

        command模塊----在被管理遠程主機上執(zhí)行的命令

        shell模塊------在被管理遠程主機上執(zhí)行的命令,但是為了調(diào)用shell進程,然后把命令在子進程中運行;在執(zhí)行的命令中可使用管道符;

        copy模塊-------用來復制文件到遠程主機

        cron模塊-------用來在遠程主機定義計劃任務

        ping模塊-------用來探測主機存活性

        filesystem模塊-制作文件系統(tǒng),格式化分區(qū)

        known_hosts模塊-管理ssh的hosts文件

        mysql_db模塊----在遠程管理數(shù)據(jù)庫

        mysql_user模塊--在遠程管理數(shù)據(jù)庫中的用戶

        setup模塊-------收集遠程指定主機的變量

          ......

        如果沒有需要的模塊,可自行編寫模塊,使用任何語言;

        所以,要想使用ansible管理遠程主機,就必須了解其中的模塊,但前提是要把被管理主機納入到管理列表中來;

        ansible在哪個目錄查找模塊,在配置文件中/etc/ansible/ansible.cfg中定義。

         ]# vim /etc/ansible/ansible.cfg

         顯示部分內(nèi)容:

         inventory = /etc/ansible/hosts 定義主機清單;

         pattern = * 默認匹配所有被管理主機;

         forks = 5 默認對遠程主機執(zhí)行命令時,5臺主機一批,一批批的執(zhí)行命令;

         module_lang = C 模塊默認編程語言;

  • ansible的使用

    一、工作模式

       運維工具大體有兩種模式

        1、agent模式:基于ssl實現(xiàn)。代理工作在被監(jiān)控端。如:puppet

        2、agentless模式:基于ssh實現(xiàn)工作在被監(jiān)控端。監(jiān)控端是ssh的客戶端。

        ansible是工作在agentless模式下具有冪等性。ansible在控制端只需要告訴監(jiān)控端的期望狀態(tài)就可以實現(xiàn)批量部署。

    二、基于密鑰認證

       現(xiàn)在有三臺機器作為被管理服務器,其中兩臺為centos6(IP分別為172.20.52.199、172.20.53.21),一臺為centos7(172.20.52.185).管理機也為centos7.(IP:172.20.52.160)

       實現(xiàn)步驟:

          1.在管理主機上使用命令: ssh-keygen -t rsa -P ''     直接回車即可生成。

          2.把當前公鑰復制到遠程主機root用戶的家目錄下

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

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

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

          3.完成后最好使用ssh root@主機IP進行驗證一下。

    三、命令使用

       1、通用格式 ansible <host-pattern> [options]

          host-pattern:指明對哪些主機執(zhí)行命令    

          options:多為要執(zhí)行的管理命令

          -a MODULE_ARGS指明模塊參數(shù)

        例如:ansible all -m ping 對所有管理主機發(fā)起ping模塊命令

              ansible-doc -s ping 查看ping模塊使用參數(shù),但ping沒有參數(shù);

     運行結(jié)果:    

    [root@centos7 yum.repos.d]# ansible all -m ping

    172.20.52.199 | SUCCESS => {

        "changed": false, 

        "ping": "pong"

    }

    172.20.52.185 | SUCCESS => {

        "changed": false, 

        "ping": "pong"

    }

    172.20.53.21 | SUCCESS => {

        "changed": false, 

        "ping": "pong"

    }

       2、command模塊

         (1)ansible websrvs -m command -a 'ls /var'

         (2)注意:ansible websrvs -a 'ls /var' 省略模塊時,默認為command模塊;

        部分結(jié)果如下:            

    172.20.52.185 | SUCCESS | rc=0 >>

    account

    adm

    cache

    crash

    db

    empty

    games

    gopher

    kerberos

    lib

    local

    lock

    log

    mail

    nis

    opt

    preserve

    run

         (3) ansible websrvs -a 'useradd user1' 在websrvs主機組中執(zhí)行命令添加user1用戶;

         (4)執(zhí)行的命令中有管道符'|'時,發(fā)生如下報錯

    [root@centos7 ~]# ansible websrvs -m command -a 'ifconfig |head -3'

    172.20.52.199 | FAILED | rc=1 >>

    -3: Unknown host

    ifconfig: `--help' gives usage information.

    

    172.20.52.185 | FAILED | rc=1 >>

    -3: Unknown host

    ifconfig: `--help' gives usage information.

        3、shell模塊

           在遠程主機的shell進程下運行命令,支持shell特性,如管道,重定向等;

          上述的(4)問題,即可利用shell模塊來解決。

        ansible websrvs -m shell -a 'echo user1 | passwd --stdin user1' 使用shell模塊,在執(zhí)行命令中能使用管道符;

        4、copy模塊

           實現(xiàn)復制文件至遠程主機            

            2種用法:

            (1)src= dest=

            (2)content= dest=

                owner,group,mode 可同時指明文件的屬主、組及權(quán)限;

                一般有=號的選項為必有選項;

                src=為本地文件或目錄;

                dest=為遠程被管理主機文件或目錄;

                content=表示把此處的內(nèi)容直接當做源文件;

            (3)ansible dbsrvs -m copy "src=/etc/passwd dest=/tmp"

             (4)ansible all -m copy -a "content='hello there\n' mode=600 owner=user1 dest=/tmp/testfile1"         

                指明了權(quán)限、屬主及換行符;默認復制后的權(quán)限為644;

        5、cron模塊

           管理計劃任務

                minute= 幾分鐘,范圍0-59;

                day= 一個月的那一天,范圍1-31,例如,1-5,*,*/2等

                month= 哪個月,范圍1-12;

                hour= 哪個小時,范圍0-23;

                weekday= 星期幾,范圍0-6;

                job= 表示state為present時,要執(zhí)行的命令;

                *name= 必須指定計劃任務條目;

                state=

                    present:創(chuàng)建cron計劃任務;默認;

                    absent:刪除cron計劃任務;

            如:ansible all -m cron -a "minute=*/5 job='/sbin/ntpdate 172.20.52.160 &> /dev/null'name=synctime"          

            沒有指明的時間默認為*,沒有指明state默認為創(chuàng)建present;

            表示每5分鐘執(zhí)行一次時間同步任務,任務名為synctime;

            可在被管理主機查看計劃任務;

            再如:ansible all -m cron -a "state=absent name=synctime"  刪除計劃任務

        6、fetch模塊

            從遠程主機拉取文件到本地

            src= 一般是目錄

            dest=只能是文件

        7、file模塊

            設定文件特性(修改屬主、組等屬性)

            用法:

                 (1)創(chuàng)建鏈接文件

                    *path=指明操作的文件

                    src=要鏈接的源文件

                    state-link

                 (2)修改屬性

                     path= owner= mode= group=

                  (3) 創(chuàng)建目錄:

                     path= state=directory

              舉例:ansible dbsrvs -m file -a "path=/tmp/ansible_tmp state=directory"

                    ansible all -m file -a "src=/tmp/fstab path=/tmp/fstab.link state=link"

         8、hostname模塊

            設定遠程主機名

            name=

            要使用變量方式,寫個循環(huán)實現(xiàn)批量更改遠程主機主機名;

         9、pip模塊

            管理Python模塊;即使用pip安裝依賴Python依賴到的模塊;

         10、yum模塊

            name=指定程序包名稱,可以帶版本號,默認最新版本

            state=

                    present,latest(最新版)安裝程序;

                    absent卸載程序;

            disablerepo 安裝時,指定臨時禁用的倉庫;

            enablerepo 安裝時,指定臨時啟用的倉庫。

            conf_file 表示yum運行時,指定(臨時)使用的配置文件,而不是默認的配置文件。

            例如:ansible all -m yum -a "name=httpd state=latest" 在被管理上安裝httpd程序

                  ansible all -m yum -a "name=httpd state=absent"在被管理上卸載httpd程序

                使用了安裝命令后,如果之前該系統(tǒng)為安裝過,運行結(jié)果顯示為×××字體。如果已經(jīng)安裝過了,則顯示為綠色。都會顯示成功安裝。由于冪等性的原因(),一個程序在成功安裝過后再次使用安裝命令不會再次安裝。

         11、service模塊

             管理遠程主機的服務

             *name=指定管理的服務

             state=

                started 啟動服務

                stopped停止服務

                restarted重啟服務

              enabled=開機自動啟動;1或0;

              runlevel=在指定級別下為開機自動啟動;默認為2345,或345級別;

              舉例:ansible all -m shell -a "ss -ntl|grep :80" 查看被管理主機是否啟動web服務

                    ansible all -m service -a "name=httpd state=started" 啟動被管理主機web服務

          12、uri模塊

               直接向被管理主機請求一個url;

                url=

                method指明請求的方法

                body如果請求方法是post,指明該body;

                user請求的url要求輸入的用戶名;

                password請求的url要求輸入的密碼;

                HEADER_發(fā)送請求的header;     

          13、user模塊

                管理用戶、組賬號

                *name=指定要管理的用戶

                state=為present|absent

                system=是否創(chuàng)建系統(tǒng)賬號

                uid=指定UID

                shell=默認shell類型

                group=基本組

                groups=額外(附加)組

                comment=注釋信息

                home=用戶家目錄

                move_home=移動已經(jīng)存在用戶的家目錄

                password添加密碼,應該指定的是openssl加密后的密碼;

                remove當state=absent時,刪除用戶時同時刪除家目錄

               舉例:

                    ansible all -m user -a "name=user2 system=yes state=presnet uid=306"

                    在被管理機上添加用戶user2,為系統(tǒng)用戶,UID為306;系統(tǒng)用戶不應該有家目錄,但此模塊也創(chuàng)建了;

           14、setup模塊

               獲取facts,即收集遠程主機的變量

                ansible 192.168.255.3 -m setup 手動收集指定遠程主機的變量;

           15、group模塊

                添加或者刪除組

                name=組名,必有參數(shù)

                state={present|absent}

                system=

                gid=

           16、script模塊

                一般為本地腳本,會自動復制到遠程主機并執(zhí)行;

                命令行使用:-a "/PATH/TO/SCRIPT_FILE"

                  注意:是本地文件路徑

                removes如果腳本依賴的文件不存在,腳本不會運行

            17、templates模塊

                就是文本文件,內(nèi)部嵌套有腳本(這個腳本使用模板編程語言編寫)

                基于模板方式生成一個文件符合到遠程主機

                src=指定本地jinja2的模板文件路徑

                dest=遠程主機

                owner=

                group=

                mode=

                

                python只有在實現(xiàn)web框架時進行嵌入,將自己基于模板編程語言嵌入到其它文本中的機制,它的模板編程語言叫jinja2嵌入式的編程語言;類似于playbook,在python中叫resource資源和清單facts;在清單中定義資源時或定義使用的模板時會用到rubby的模板編程語言;

                jinja2模板編程語言所實現(xiàn)的功能是,可以在文本文件中,使用一個所謂的嵌入的標記語法,引入一段模板編程語言所編寫的腳本;而這種腳本無法就是支持比較簡單的編程元素,如條件判斷、(迭代)循環(huán)、變量;

                ansible的安裝與使用

               舉例:演示模板應用

              使用ansible在三臺主機上,安裝nginx,提供配置文件,但其中的worker_processores的值要與主機的cpu核心數(shù)相同;此時,就可以把配置文件基于模板方式提供,而這個worker_processores的值,放的就是jinja2所支持的變量,直接使用變量的方式放在那個位置,而本機的template模板會自動套用這里面變量的值,給ansible facts所報告的結(jié)果,并把它生成在這個文件中,而后復制到目標主機上去。這就是模板的作用。

               能夠把里面嵌入的代碼執(zhí)行完以后,把執(zhí)行后生成的結(jié)果放在代碼所在處并且生成內(nèi)容作為文本流輸出給目標主機;

                

                    編輯epel源復制到遠程主機:

                    ]# vim files/epel.repo

                        [epel]

                        name=fedora epel

                        baseurl=http://mirrors.aliyun.com/epel/$releasever/$basearch

                        enabled=1

                        gpgcheck=1

                        ]# ansible all -m copy -a "src=files/epel.repo dest=/etc/yum.repos.d" --check 如果有epel源,可省略此步驟;

                        ]# ansible all -m yum -a "name=nginx state=present" --check 測試安裝

                        ]# ansible all -m yum -a "name=nginx state=present" 安裝nginx

                        

                        ]# cp /etc/nginx/nginx.conf files/nginx.conf.j2

                        ]# vim files/nginx.conf.j2

                        修改:

                        worker_processes ` ansible_processor_vcpus `;

                        注意:template模板不能在命令行中使用,只能編寫yaml文件;

                

                        ]# vim nginx.yaml

                            - hosts: websrvs

                              remote_user: root

                              tasks:

                            - name: install nginx

                              yum: name=nginx state=present

                            - name: install conf file

                              template: src=files/nginx.conf.j2 dest=/etc/nginx/nginx.conf

                              notify: restart nginx

                              tags: instconf

                            - name: start nginx service

                              service: name=nginx state=started

                            handlers:

                            - name: restart nginx

                              service: name=nginx state=restarted

                                

                            ansible-playbook --check nginx.yaml 測試執(zhí)行

                            ]# ansible-playbook nginx.yaml 執(zhí)行

                            可觀察兩臺主機上的worker進程個數(shù)均為該主機的cpu核心數(shù);即開啟了2個worker進程;

                            

                            還可使用主機變量,讓不同主機監(jiān)聽不同端口:

                            ]# vim files/nginx.conf.j2

                            修改:

                            listen ` http_port `; 調(diào)用主機變量


                            ]# vim /etc/ansible/hosts

                            [websrvs]

                            192.168.255.3 http_port=80 定義主機變量

                            192.168.255.4 http_port=8080

                            ]# ansible-playbook --check nginx.yaml 測試執(zhí)行

                            ]# ansible-playbook nginx.yaml 執(zhí)行

                            可在兩臺遠程主機驗證,一個監(jiān)聽在80端口,另一個監(jiān)聽在8080端口;

            

                

                        對變量還可使用算術(shù)運算:

                        例如:

                        ]# vim files/nginx.conf.j2

                        修改:

                        worker_processes ` ansible_processor_vcpus-1 `; 變量參與了算術(shù)運算

                        ]# ansible-playbook --check nginx.yaml 測試執(zhí)行

                        ]# ansible-playbook nginx.yaml 執(zhí)行

                        可在兩臺遠程主機驗證,worker進程個數(shù)均減少了1個;

                    

            

           18、playbook

               (1)核心元素

                Hosts:

                Tasks:任務

                Variables:變量;可調(diào)用ansible的變量或自定義的變量

                Templates:包含了模板語法的文本文件;提供配置文件的辦法,可在文件中使用變量;該變量時與目標主機相關(guān)的值;

                Handlers:任務處理器,由特定條件觸發(fā)的任務;本質(zhì)還是tasks;

                

                Roles:就是由以上元素組成;把主機列表分出來,用到哪個主機時,就放在哪個主機上執(zhí)行,這就是roles;

                其實還有users,指明在目標主機上,使用哪個用戶的身份運行命令;不指明則默認為root,但是通常用sudo的方式進行指定,因此,必要時,要指明遠程主機運行此任務的用戶身份;

                playbook的主要作用:

                    就是能夠把多個相關(guān)聯(lián)的任務,通過讀取YAML格式的配置文件一次編完;要把任務、變量、模板、處理器放在一個YAML格式文件中進行指定,然后任務就可一次批量執(zhí)行;

                    

                    其他組件

                      ansible facts可使用stup模塊獲??;收集遠程主機變量;

                      ansible-playbook -e "var=value"自定義變量

                      host variable:host iventory主機變量

                      group variable(主機組上的變量)

                            [groupname:vars]

                             var=value

                      roles

                      變量調(diào)用方法:` variable `

                (2)舉例:playbook的基礎組件hosts和tasks

                      vim first.yaml    

                    - hosts: all

                      remote_user: root

                      tasks:

                      - name: create a user3

                        user: name=user3 system=true uid=307

                      - name: create a user4

                        user: name=user4 system=true uid=308

                    在遠程三臺主機,以root身份執(zhí)行2個任務,添加兩個用戶指定用戶名、uid且為系統(tǒng)用戶。

                    ansible-playbook --check first.yaml測試執(zhí)行

                

[root@centos7 ~]# vim first.yaml

[root@centos7 ~]# ansible-playbook --check first.yaml 


PLAY [all] *********************************************************************


TASK [setup] *******************************************************************

ok: [172.20.53.21]

ok: [172.20.52.185]


TASK [create a user3] **********************************************************

changed: [172.20.53.21]

changed: [172.20.52.185]


TASK [create a user4] **********************************************************

changed: [172.20.53.21]

changed: [172.20.52.185]


PLAY RECAP *********************************************************************

172.20.52.185              : ok=3    changed=2    unreachable=0    failed=0   

172.20.53.21               : ok=3    changed=2    unreachable=0    failed=0   

    

PLAY RECAP 返回的報告

172.20.52.185 : ok=3 changed=2 unreachable=0 failed=0 表示3個任務ok,其中2個是修改以后

ok,unreachable表示聯(lián)系不到執(zhí)行不了, failed表示執(zhí)行失?。?/p>

172.20.53.21 : ok=3 changed=2 unreachable=0 failed=0

                     

                    ansible-playbook --list-hosts first.yaml 查看這個playbook運行在哪些主機上;

                    ansible-playbook first.yaml 真正執(zhí)行

                (3)playbook實際運用舉例

                   mkdir working

                   cd working

                   mkdir files    

                   cp /etc/httpd/conf/httpd.conf  files/

                    vim files/httpd.conf

                        修改其中的Listen 8080

                    vim web.yaml

                    - hosts:websrvs

                      remote_user: root

                      tasks:

                      - name: install httpd package

                        yum: name=httpd state=present

                      - name: install configure file

                        copy:src= files/httpd.conf dest= /etc/httpd/conf

                      - name: start httpd service

                        service: name=httpd state=started

                      - name: execute ss command    

                        shell: ss-ntl|grep :8080     

                    

                     ansible all -m yum -a "name=httpd state=absent" 把所有主機的文本服務停掉;

                     ansible-playbook --check web.yaml 測試

                     ansible-playbook web.yaml 執(zhí)行   

                     ansible websrvs -m shell -a "ss -tnl|grep 8080" 查看遠程主機是否監(jiān)聽了8080端口;注意:在ansible中執(zhí)行ss -tnl | grep :8080,這種查詢是不顯示結(jié)果的,所以,一般不在ansible里執(zhí)行有關(guān)查詢顯示的命令;

                 (4)演示handlers,觸發(fā)執(zhí)行

                    如果把監(jiān)聽端改為808,再執(zhí)行,則不會生效,因為,服務已經(jīng)啟動了,除非重啟服務,這時,就應該用到handlers處理器;

                    vim web-2.yaml

                    - hosts:websrvs

                      remote_user: root

                      tasks:

                      - name: install httpd package

                        yum: name=httpd state=present

                      - name: install configure file

                        copy: src=files/httpd.conf dest=/etc/httpd/conf/

                        notify: restart httpd       ##定義觸發(fā),調(diào)用處理器的名字

                      - name: started httpd service

                        service: name=httpd state=started

                      handlers:   ## 觸發(fā)后處理器執(zhí)行的命令

                      - name: restart httpd   ##必須與notify調(diào)用名保持一致;

                        service: name=httpd state=restarted

                      vim files/httpd.conf(管理機)

                        Listen 808

                      ansible-playbook --check web-2.yaml 只有觸發(fā)時,才執(zhí)行handlers里面定義的命令;

                      ansible-playbook web-2.yaml 直接運行

                    

                 (5)演示tag,調(diào)取標簽執(zhí)行指定任務   

                    根據(jù)上例,如果僅修改了配置文件,卻還要從第一步,執(zhí)行安裝程序包,這樣是沒必要的,所以,可使用tag,給任務加標簽,不指定標簽時,執(zhí)行所有任務,加標簽時,只執(zhí)行標簽所在的任務;

                    vim web-3.yaml

                    - hosts:websrvs

                      remote_user: root                   

                      tasks:

                      - name: install httpd package

                        yum: name=httpd state=present

                        tags: insthttpd 

                      - name: install configure file

                        copy: src=files/httpd.conf dest=/etc/httpd/conf/

                        tags: instconf

                        notify: restart httpd

                      - name: started httpd service

                        service: name=httpd state=started

                        tags: starthttpd

                      handlers:

                      - name: restart httpd

                        service: name=httpd state=restarted


                       vim files/httpd.conf

                       Listen 80

                       ansible-playbook  -t instconf --check web-3.yaml 指定執(zhí)行標簽上的任務.

                       ansible-playbook -t insthttpd --check web-3.yaml 則發(fā)現(xiàn)只運行了一個任務;

                       還可為讓兩個任務標簽相同。添加后--- ansible-playbook -t insthttpd --check web-3.yaml 發(fā)現(xiàn),會運行兩個任務;這就叫標簽;

                        ansible-playbook -t instconf,insthttpd --check web-3.yaml 調(diào)用多個標簽;

                (6)演示在ansible-playbook命令行調(diào)用變量

                    vim forth.yaml

                    - hosts:websrvs

                      remote_user:root

                      tasks:

                      - name: install ` pkname `必須使用雙花括號,調(diào)用變量

                        yum: name=` pkname ` state=present

                    舉例1:ansible-playbook -e pkname=memcached forth.yaml安裝memcached,用變量傳遞。

                    舉例2:

                         vim /etc/ansible/hosts

                         [websrvs]

                         172.20.52.185 hname=www1

                         172.20.53.21  hname=www2

                        

                         vim hostname.yaml

                         - hosts:websrvs

                           remote_user:root

                           tasks:

                           - name: set hostname

                             hostname: name=` hname `

                       ansible-playbook --check hostname.yaml 測試執(zhí)行; 

                    舉例3:向主機組中的主機傳遞相同的變量    

                          

                            [websrvs]

                            172.20.52.185 hname=baby1

                            172.20.53.21  hname=baby2



                             [websrvs:vars]

                             http_port=8080

                             [dbsrvs]

                             172.20.53.21



                  

                variables:變量

                    (1)facts:任何facts變量都由正在通信的目標主機發(fā)回的信息,ansible自動獲取變量,可直接調(diào)用;在setup模塊

中查看變量;

                    (2)ansible-playbook命令的命令行中的自定義變量;

                        -e VARS, --extra-vars=VARS

                    (3)通過roles傳遞變量;

                    (4)Host Inventory

                        (a)向不同的主機傳遞不同的變量;

                            IP/HOSTNAME varailble=value var2=value2

                        (b)向組中的主機傳遞相同的變量;

                            [groupname:vars]

                            variable=value

                            注意:invertory參數(shù):

                            用于定義ansible遠程路徑目標主機時使用的參數(shù),而非傳遞給playbook的變量;

                            ansible_ssh_host

                            ansible_ssh_port

                            ansible_ssh_user

                            ansible_ssh_pass

                            ansible_sudo_pass

                            ...

                            通常ansible中的inventory還有專門參數(shù),不叫變量,因為它不是傳遞給playbook使用的,而是通過ansible連接每個被管理主機時使用的;

                        例如:

                        連接遠程主機時,如果不使用密鑰方式,需要輸入賬號、密碼;還可編輯hosts文件:

]# vim /etc/ansible/hosts

[dbsrvs]

192.168.255.4

192.168.255.60 ansible_ssh_user=root ansible_ssh_pass=root

可以在模板中調(diào)用變量,為不同的主機生成不同的配置,雖然看上去是同一個配置文件,不同主機拿到的配置文件可以不一樣;

                        









向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI