<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ansible(一)--基本安裝使用

      ansible(一)——基本安裝使用

      單位用的ansible,也用了salt,所以自動(dòng)化管理工具,基本上幾個(gè)重量級(jí)的都用到了,所以這邊總結(jié)就開始利用三者對(duì)比使用的總結(jié)

      step0:簡(jiǎn)介

      • Ansible是一種集IT系統(tǒng)的配置管理、應(yīng)用部署、流程設(shè)置的開源軟件工具,與其他管理軟件工具有多方面的差異。目標(biāo)是提供面對(duì)廣泛的自動(dòng)化挑戰(zhàn)如何獲得大型生產(chǎn)力的優(yōu)勢(shì)。當(dāng)Ansible提供更強(qiáng)大的生產(chǎn)力逐步替代其他許多核心性能的自動(dòng)化解決方案,它也在尋求解決其他還沒解決的IT挑戰(zhàn),這些包括如何時(shí)復(fù)雜多層級(jí)工作流程清晰化、清楚統(tǒng)一的OS配置、在單一框架下應(yīng)用軟件的部署。
      • Ansible追尋保持IT工作流程描述的可理解性和能夠快速部署。這意味著需要容易構(gòu)建、容易理解 – 例如新用戶能夠快速融入新的IT項(xiàng)目。長(zhǎng)期存在自動(dòng)化的內(nèi)容即使是項(xiàng)目結(jié)束數(shù)個(gè)月之后也能夠容易理解。Ansible追尋使事情強(qiáng)大滿足專家使用,同時(shí)也能滿足不同水平級(jí)別用戶需求,保證較快把IT項(xiàng)目推向市場(chǎng),在IT配置需要變更時(shí)候能夠易于較快、較少錯(cuò)誤。
      • Ansible是基于最小性質(zhì)、一致性、安全性、高可靠性設(shè)計(jì)的,同時(shí)對(duì)于管理員、開發(fā)者、IT經(jīng)理的學(xué)習(xí)曲線都非常低。
      • Ansible和該領(lǐng)域許多其他的工具的最主要區(qū)別就是他們的架構(gòu):
      • Ansible默認(rèn)管理遠(yuǎn)端機(jī)器是通過SSH,可以使用paramiko庫(kù)(基于Python)或OS-native OpenSSH,當(dāng)使用OpenSSH時(shí)也支持Kerberized SSH和堡壘主機(jī)。
        是否需要其他方式的傳輸,傳輸方式是可以以插件方式添加的,例如基于0MQ加速傳輸就是這種方式。也提供本地連接類型(無網(wǎng)絡(luò))。
      • Ansible不需要root用戶權(quán)限,如果需要可以通過sudo來訪問。
      • Ansible不需要指定的SSH密鑰或?qū)S脦ぬ?hào),可以使用任何OS授權(quán)用戶或遵從你的操作系統(tǒng)允許的模型提供的帳號(hào)
        當(dāng)需要的時(shí)候,Ansible將傳輸模塊到遠(yuǎn)程節(jié)點(diǎn),將運(yùn)行在遠(yuǎn)程用戶授權(quán)的模式下,并且不會(huì)留下任何安裝信息在這些遠(yuǎn)程節(jié)點(diǎn)上。
      • Ansible不需要任何在管理機(jī)器運(yùn)行的服務(wù)軟件,只需要授權(quán)用戶有執(zhí)行權(quán)限就可以。
      • Ansible不需要在任何遠(yuǎn)端機(jī)器上安裝任何代理軟件。
        不需要維護(hù)除SSH端口之外的任何端口和額外的PKI架構(gòu)。
        這些訪問控制服務(wù)器(或源控制)不能推送內(nèi)容到遠(yuǎn)程系統(tǒng)(除了命令他們)也在遠(yuǎn)程系統(tǒng)上沒有授權(quán)
        當(dāng)Ansible不管理遠(yuǎn)程機(jī)器時(shí)候,遠(yuǎn)程這些機(jī)器沒有任何資源損耗。
      • Ansible集這些特性于一身,使它成為高安全環(huán)境、高性能情況下的理想選擇,同時(shí)關(guān)注管理代理的穩(wěn)定性或性能,通常這些特性在所有的計(jì)算機(jī)領(lǐng)域都是有用的。

      以上內(nèi)容摘自ansible中國(guó)工作組 http://www.ansible.cn/wordpress/?p=27

      Ansible Vs. puppet Vs. Saltstack 對(duì)比

      / | Puppet | Saltstack | ansible
      —- | —- | —- | —-
      開發(fā)語言 | Ruby | Python | Python
      是否有客戶端 | 有 | 有 | 無
      是否支持二次開發(fā) | 不支持 | 支持 | 支持
      服務(wù)器與遠(yuǎn)程機(jī)器是否相互驗(yàn)證 | 是 | 是 | 是
      服務(wù)器與遠(yuǎn)程機(jī)器通信是否加密 | 是,標(biāo)準(zhǔn) SSL 協(xié)議 | 是,使用 AES | 加密 是,使用 OpenSSH
      平臺(tái)支持 | 支持 AIX、BSD、HP-UX、Linux、 MacOSX、Solaris、 Windows | 支持 BSD、Linux、Mac OS X、Solaris、 Windows | 支持 AIX、BSD、 HP-UX、 Linux、Mac OSX、Solaris
      是否提供 web ui | 提供 | 提供 | 提供,不過是商業(yè)版本
      配置文件格式 | Ruby 語法格式 | YAML | YAML
      命令行執(zhí)行 | 不支持,但可通過配置模塊實(shí)現(xiàn) | 支持 | 支持

      如果去國(guó)外找找,Ansible在國(guó)外的流行程度甚至超過salt

      系統(tǒng)環(huán)境

      Distribution      : CentOS 6.5 minimal
      ansible version   : 1.5.5
      Init system       : sysvinit
      

      安裝之前

      1、時(shí)間同步
      2、關(guān)閉selinux
      
      

      step1:安裝

      1.拓?fù)?/h4>
      node134:master
      node131:slave
      
      

      2.安裝

      rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
      yum install ansible
      
      

      Mac 下的安裝

      當(dāng)用Mac os進(jìn)行管理的時(shí)候,使用了密碼管理會(huì)提示
      to use the 'ssh' connection type with passwords, you must install the sshpass program

      centos或者Ubuntu都可以用包管理工具進(jìn)行管理,但是Mac上homebrew卻因?yàn)榘踩虿恢С诌@個(gè)包,所以必須手動(dòng)或者安裝非官方的包

      第一種方式:手動(dòng)安裝
      cd ~/Downloads
      curl -O -L http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz
      tar xvzf sshpass-1.05.tar.gz
      cd sshpass-1.05
      ./configure
      make
      sudo make install
      
      
      ```
      第二種方式,安裝Mac os包管理器之外第三方包
      brew install https://raw.github.com/eugeneoden/homebrew/eca9de1/Library/Formula/sshpass.rb
      

      3.配置文件

      /etc/ansible/hosts — 默認(rèn)資源文件
      /usr/share/ansible/ — 默認(rèn)模塊庫(kù)
      /etc/ansible/ansible.cfg — 默認(rèn)配置文件
      ~/.ansible.cfg — 用戶配置文件,如果使用優(yōu)先級(jí)高于ansible.cfg配置文件
      
      

      具體配置文件參考:http://docs.ansible.com/intro_configuration.html#pipelining

      step2:遠(yuǎn)程執(zhí)行命令

      ansible是基于ssh協(xié)議之上進(jìn)行遠(yuǎn)程管理,所以無須安裝客戶端,直接只要能ssh連接過去,就可以進(jìn)行管理了

      1.配置管理客戶端和秘鑰登錄

      cp hosts hosts.bak
      vim hosts
      
      [test]          //group_name,名稱可以自定義,可以將不同的作用的機(jī)器放在不同的組里
      192.168.122.134
      192.168.122.131
      
      [test]
      192.168.122.134 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=skstserver
      
      #ssh無秘鑰登錄
      ssh-keygen -t rsa -P ''
      ssh-copy-id -i .ssh/id_rsa.pub root@192.168.122.131
      
      

      2、批量發(fā)送公鑰

      為ansible開始管理節(jié)點(diǎn)傳遞公鑰
      如果是可以直接使用root的環(huán)境,則直接使用這個(gè)腳本

      vim tra_pub.exp

      #!/usr/bin/expect -f
      set timeout -1
      set user root
      set passwd "123456"
      
      for { set i 201 } { $i < 208 } { incr i } {
          spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user@192.168.1.$i
          expect {
              "yes/no" { send "yes\r";exp_continue }
              "id_rsa" { send "yes\r";exp_continue }
              "*assword" { send "$passwd\r" }
          }
      }
      expect eof
      
      

      如果需要使用普通用戶進(jìn)行切換的環(huán)境則可以使用以下的腳本

      #!/usr/bin/expect -f
      set timeout -1
      set user test
      set passwd "123456"
      
      for { set i 100 } { $i < 120 } { incr i } {
          spawn ssh -l $user 172.41.30.$i
          expect {
              "yes/no" { send "yes\r";exp_continue }
              "id_rsa" { send "yes\r";exp_continue }
              "*assword" { send "$passwd\r" ;exp_continue }
              "test@" {
              send "sudo su -\r"
              expect {
                  "password for test" { send "$passwd\r";exp_continue }
                  }
              }
          }
      }
      expect eof
      exit 0
      
      

      3、批量定義inventory

      直接利用for循環(huán)進(jìn)行批量的寫入

      for i in $(seq 200 240);do echo 192.168.1.$i >> /etc/ansible/hosts;done
      
      

      4.測(cè)試遠(yuǎn)程執(zhí)行命令

      # ansible all -a 'pwd' -f 10  #10個(gè)線程
      192.168.122.131 | success | rc=0 >>
      /root
      
      192.168.122.134 | success | rc=0 >>
      /root
      
      

      step3:利用模塊管理遠(yuǎn)程主機(jī)

      # tree /usr/share/ansible/ -L 1    \\所有模塊庫(kù)存放位置
      /usr/share/ansible/
      ├── cloud
      ├── commands
      ├── database
      ├── files
      ├── internal
      ├── inventory
      ├── messaging
      ├── monitoring
      ├── net_infrastructure
      ├── network
      ├── notification
      ├── packaging
      ├── source_control
      ├── system
      ├── utilities
      └── web_infrastructure
      16 directories, 0 files
      
      

      1.創(chuàng)建定時(shí)任務(wù)

      這邊以定時(shí)任務(wù)模塊舉例,創(chuàng)建定時(shí)任務(wù)
      模塊主頁:http://docs.ansible.com/cron_module.html

      # ansible test -m cron -a 'name="create test crontab" minute="*1" job="/usr/sbin/ntpdate pool.ntp.org &> /dev/null"'
      192.168.122.131 | success >> {
          "changed": true,
          "jobs": [
              "create test crontab"
          ]
      }
      
      192.168.122.134 | success >> {
          "changed": true,
          "jobs": [
              "create test crontab"
          ]
      }
      

      檢測(cè)結(jié)果

      # ansible all -a 'crontab -l'
      #Ansible: create test crontab
      *1 * * * * /usr/sbin/ntpdate pool.ntp.org &> /dev/null
      
      #Ansible: create test crontab
      *1 * * * * /usr/sbin/ntpdate pool.ntp.org &> /dev/null
      
      

      2.判斷某個(gè)服務(wù)是否正常啟動(dòng)

      模塊主頁:http://docs.ansible.com/service_module.html

      # ansible all -m service -a 'name=httpd state=started'
      192.168.122.131 | FAILED >> {
          "failed": true,
          "msg": "cannot find 'service' binary or init script for service,  possible typo in service name?, aborting"
      }
      
      192.168.122.134 | success >> {
          "changed": true,
          "name": "httpd",
          "state": "started"
      }
      
      

      \因?yàn)樵?22.134上,有安裝的httpd的啟動(dòng)腳本,而131上沒有,所以module執(zhí)行成功的前提是需要有相關(guān)的服務(wù)支持

      3.批量安裝包

      # ansible all -a 'rpm -q vsftpd'    \\查看遠(yuǎn)程機(jī)器上是否安裝了vsftpd的包
      192.168.122.131 | FAILED | rc=1 >>
      package vsftpd is not installed
      
      192.168.122.134 | FAILED | rc=1 >>
      package vsftpd is not installed
      
      
      ```
      #利用yum的module來進(jìn)行
      # ansible all -m yum -a 'name=vsftpd state=present'
          \\安裝過程取決于網(wǎng)絡(luò)安裝的速度
      
      
      ```
      #檢測(cè)結(jié)果
      # ansible all -a 'rpm -q vsftpd'
      192.168.122.131 | success | rc=0 >>
      vsftpd-2.2.2-11.el6_4.1.x86_64
      
      192.168.122.134 | success | rc=0 >>
      vsftpd-2.2.2-11.el6_4.1.x86_64
      
      

      ansible的功能遠(yuǎn)遠(yuǎn)不止如此,重頭的playbook也是下面要學(xué)習(xí)的重點(diǎn)

      4、查看節(jié)點(diǎn)信息

      ansible all -m setup
      這里的信息即為gather信息,后面可以使用這些信息做一些判斷
      
      

      step4:執(zhí)行原理

      參考了the5fire博客的內(nèi)容

      大概的流程,只是針對(duì)playbook來說(Ad-Hoc的執(zhí)行是直接掉得runner)。
      1.首先ansbile-playbook接受到參數(shù): playbook.yml,然后讀取這個(gè)yml文件,根據(jù)這個(gè)yml文件生成Playbook對(duì)象,代碼: class Playbook 。
      2.在這個(gè)Playbook中加載yml文件,在執(zhí)行時(shí)生成Play對(duì)象,在Play對(duì)象中又包含了Task對(duì)象,一個(gè)Task對(duì)象可以算是一個(gè)最小的執(zhí)行單元。
      3.到了Task這一步之后就應(yīng)該調(diào)用runner接口了,這個(gè)接口的調(diào)用還是在Playbook這個(gè)類中: Playbook._run_task_internal 。而這個(gè)runner接口,上面已經(jīng)介紹了,到此也就大體了解上層的執(zhí)行過程了。
      
      

      step5:FAQ

      1、"msg": "Error: ansible requires a json module, none found!"
      
      原因是python版本過低,要不升級(jí)python要不就安裝python-simplejson
      
      ```
      2、paramiko: The authenticity of host '192.168.122.132' can't be established.
      The ssh-rsa key fingerprint is 397c139fd4b0d763fcffaee346a4bf6b.
      Are you sure you want to continue connecting (yes/no)?
      
      如果know_hosts中沒有目標(biāo)機(jī)器,那么ansible第一次連接的時(shí)候會(huì)報(bào)一個(gè)異常
      如果不希望提示這個(gè)異常,直接編輯
      # vim ansible.cfg
      host_key_checking = False   #取消注釋
      
      ```
      3、FAILED: not a valid DSA private key file
      
      需要你在最后添加參數(shù)-k,也就是-k, --ask-pass        ask for SSH password
      
      另外默認(rèn)ansible是使用key驗(yàn)證的,如果使用密碼登陸的服務(wù)器,使用ansible的話,要不修改ansible.cfg配置文件的ask_pass = True給取消注釋,
      要不就在運(yùn)行命令時(shí)候加上-k,這個(gè)意思是-k, --ask-pass        ask for SSH password
      
      
      ```
      4、Error: ssh encountered an unknown error during the connection
      
      命令行碰到這個(gè)問題,兩種辦法可以解決,
      a、inventory的每個(gè)item記錄后面加上 ansible_ssh_user=root,當(dāng)然環(huán)境不允許root的,需要進(jìn)行sudo了
      b、命令行上加上-u user進(jìn)行連接
      
       
      posted @ 2024-07-09 10:14  david_cloud  閱讀(48)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 九九热在线视频免费观看| 亚洲国产区男人本色vr| 玩弄丰满少妇人妻视频| 日日爽日日操| 91亚洲国产三上悠亚在线播放| 精品天堂色吊丝一区二区| 曰韩高清砖码一二区视频| 国产成人亚洲综合图区| 人人爽人人爽人人片a免费| 亚洲青青草视频在线播放| 伊人色综合一区二区三区| 国偷自产一区二区三区在线视频| 国产自国产自愉自愉免费24区| 亚洲熟妇少妇任你躁在线观看无码| 欧美日韩一区二区综合| 亚洲AV国产福利精品在现观看| 老熟女重囗味hdxx69| 白白发布视频一区二区视频| 久久人妻公开中文字幕| 亚洲中文字幕无码爆乳app| 无码激情亚洲一区| 国产仑乱无码内谢| 131mm少妇做爰视频| 九九热精品在线免费视频| 亚洲一区二区美女av| 中文字幕 日韩 人妻 无码| 思南县| 久久99精品久久久久久青青| 亚洲av永久无码精品水牛影视| 亚洲综合国产一区二区三区| 欧美成人h亚洲综合在线观看| 国产精品不卡一二三区| 色婷婷综合久久久久中文字幕 | 永久国产盗摄一区二区色欲| 婷婷丁香五月激情综合| 成人国产精品中文字幕| 午夜激情福利一区二区| 精品久久久久无码| 国产熟女50岁一区二区| 久久国产精品夜色| 男女一级国产片免费视频|