ansible安裝配置及基本用法


ansiblle具有如下特點:
1、部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作;
2、默認使用SSH協議對設備進行管理;
3、主從集中化管理;
4、配置簡單、功能強大、擴展性強;
5、支持API及自定義模塊,可通過Python輕松擴展;
6、通過Playbooks來定制強大的配置、狀態管理
7、對雲計算平台、大數據都有很好的支持;redis配置文件:這樣寫可以獲取到客戶機的ipv4地址,bind {{ ansible_default_ipv4.address }}

 

 

1 安裝ansible
      Ansible倉庫默認不在yum倉庫中,因此我們需要使用下面的命令啟用epel倉庫。
       yum install epel-release -y
       yum install ansible -y
2.  ansible命令參數
        anisble命令語法: ansible [-i 主機文件] [-f 批次] [組名] [-m 模塊名稱] [-a 模塊參數]
        ansible詳細參數:
         -v,–verbose   #  詳細模式,如果命令執行成功,輸出詳細的結果 (-vv –vvv -vvvv)
         -i PATH, -inventory=PATH      #  指定 host 文件的路徑,默認是在 /etc/ansible/hosts 
inventory  [ˈɪnvəntri]  庫存
         -f NUM,-forks=NUM     # NUM 是指定一個整數,默認是 5 ,指定 fork 開啟同步進程的個數。
         -m NAME,-module-name=NAME    #   指定使用的 module 名稱,默認使用 command模塊
        -a,MODULE_ARGS   #指定 module 模塊的參數
         -k,-ask-pass           #提示輸入 ssh 的密碼,而不是使用基於 ssh 的密鑰認證
         -sudo          # 指定使用 sudo 獲得 root 權限
         -K,-ask-sudo-pass             #提示輸入 sudo 密碼,與 -sudo 一起使用
         -u USERNAME,-user=USERNAME          # 指定移動端的執行用戶
         -C,–check             #測試此命令執行會改變什么內容,不會真正的去執行
 3. 生成密鑰
     ssh-keygen默認就行
     使用ssh-copy-id命令來復制Ansible公鑰到節點  
     ssh-copy-id  root@節點ip

  

43. 定義主機清單
          1、基於端口,用戶,密碼定義主機清單
                ansible基於ssh連接-i (inventory)參數后指定的遠程主機時,也可以寫端口,用戶,密碼。
                格式:ansible_ssh_port:指定ssh端口   ansible_ssh_user:指定 ssh 用戶 ansible_ssh_pass:指定 ssh 用戶登錄是認證密碼(明文密碼不安
全) ansible_sudo_pass:指明 sudo 時候的密碼 vim /etc/ansible/hosts #文件 /etc/ansible/hosts 維護着Ansible中服務器的清單。在文件最后追加以下內容 [web-servers] ansible服務器ip ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456 [web-server] 節點ip

  

5.  測試主機連通性
         ansible -i /etc/ansible/hosts web-servers -m ping  
         -i    #  指定 host 文件的路徑,默認是在 /etc/ansible/hosts 
         -m    #   指定使用的ping模塊
          報錯:
          192.168.1.63 | FAILED! => {
    "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
}

           ssh root@192.168.1.63   #手動連接一下/etc/ansible/hosts主機清單中的主機,這樣就可以在ansible服務器上保存目標主機的fingerprint指紋。再連接試試,如果不行,修改配置文件ansible.cfg,將host_key_checking = False打開就OK了。
      

5.1 獲取節點服務器運行時間
      ansible -m command -a "uptime" web-servers
      ansible -i hosts web-servers -m command -a "uptime" 

5.2  給節點增加用戶
        ansible -i hosts web-servers -m command -a "useradd xiaoxiao"

5.3  scripts模塊
       使用scripts模塊可以在本地寫一個腳本,在遠程服務器上執行
       copy模塊
       實現主控端向目標主機拷貝文件,類似scp功能
       ansible -i /etc/ansible/hosts web-servers -m copy -a "src=/ai.sh dest=/tmp owner=liutao group=liutao mode=755"
        相當於scp文件,可以定義擁有者,組以及權限。

5.4  獲取遠程文件信息
            stat模塊
           ansible -i hosts web-servers -m stat -a "path=/tmp/ai.sh"

5.5 get_url模塊實現遠程主機下載指定url到本地
          ansible -i /etc/ansible/hosts web-servers -m get_url -a "url=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  dest=/tmp/ mode=0440 force=yes"
           注:url=https://xxx  的等號=前后不能有空格  
              如果force=yes,當下載文件時,如果所下的內容和原目錄下的文件內容不一樣,則替換原文件,如果一樣,就不下載了。
          如果為“否”,則僅在目標不存在時才下載文件。 一般來說,只有小型本地文件才應該為“是”。 在0.6之前,該模塊表現為默認為“是”
5.6  yum模塊linux平台軟件包管理。
           yum模塊可以提供的status狀態: latest ,present,installed  #這3個代表安裝;removed, absent #后面2個是卸載
           安裝http,mysql軟件
           ansible -i /etc/ansible/hosts web-servers -m yum -a "name=httpd  state=latest"
5.7   cron模塊:執行定時任務
           ansible -i /etc/ansible/hosts web-servers -m cron -a "name='mkdir' minute=5 hour=02 day=15 month=8 weekday=3 job='mkdir /tmp/a.txt'"
          minute hour day month weekday   分  時  日   月  周
5.8  service模塊   遠程主機系統服務管理
       name參數:此參數用於指定需要操作的服務名稱,比如 nginx,httpd。 
       state參數:此參數用於指定服務的狀態,比如,我們想要啟動遠程主機中的httpd,則可以將 state 的值設置為 started;如果想要停止遠程主機中的服務,則可以將 state 的值設置為 stopped。此參數的可用值有 started、stopped、restarted(重啟)、reloaded。 
enabled參數:此參數用於指定是否將服務設置為開機 啟動項,設置為 yes 表示將對應服務設置為開機啟動,設置為 no 表示不會開機啟動。
        注:想使用service模塊啟動服務,被啟動的服務,必須可以使用service 命令啟動或關閉     reloaded, restarted, started, stopped   平滑重啟,重啟,啟動,關閉
        enabled=yes開機自啟動,no開機不啟動
        ansible -i /etc/ansible/hosts web-servers -m service -a "name=httpd state=started"
         ansible -i /etc/ansible/hosts web-servers -m service -a "name=httpd enabled=yes"   
   
5.9  sysctl模塊遠程主機sysctl配置。
            開啟路由轉發功能
            ansible -i /etc/ansible/hosts web-servers -m sysctl -a "name=net.ipv4.ip_forward value=1 reload=yes"
       
        user模塊遠程主機用戶管理
              ansible -i hosts web-servers -m user -a "name=xxx state=present"
              state參數state=absent(刪除用戶,不刪除家目錄)  默認是present(創建用戶)
state=absent remove=yes(刪除用戶同事刪除家目錄,用戶不存在不操作)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM