自動化運維Ansible安裝部署及使用

一、SSH分發
ansible自動化部署條件
1.建議基於ssh密鑰方式創建遠程鏈接
2.基於ssh口令方式創建遠程鏈接(不建議)
在部署以前須要保證管理主機和受控主機可以基於ssh密鑰的方式進行遠程鏈接
管理主機生成SSH密鑰(私鑰和公鑰),分發公鑰到每臺受控主機:
1.安裝sshpass
[root@m01 ~]# yum install sshpass -y
2.生成密鑰
// 直接生成密鑰
[root@m01 ~]# ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
Generating public/private dsa key pair.
Created directory '/root/.ssh'.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:gfr8/bG2IAzxNJiom7WGwba8G26BZ5yfxJMp6O3Ouh4 root@m01
The key's randomart image is:
+---[DSA 1024]----+
| |
| . + |
| . = + |
| . . . + o |
| +=ooo. S |
|ooBB*+ o |
|.EO=ooo o . . |
| o+=o . o ..o |
|.=O= . .o+. |
+----[SHA256]-----+
3.分發密鑰
// 免交互式批量分發公鑰腳本
[root@m01 ~]# vim ~/ssh-fenfa.sh
#!/bin/bash
rm -f /root/.ssh/id_dsa
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
for ip in 7 8
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no" 10.4.7.$ip
done
// 執行腳本
[root@m01 ~]# sh ~/ssh-fenfa.sh
4.一鍵ssh登陸測試for循環
[root@m01 ~]# for i in 7 8 ;do ssh 10.4.7.$i date ;done
Mon Feb 3 17:23:50 CST 2020
Mon Feb 3 17:23:50 CST 2020
二、安裝Ansible
安裝方法有不少,這裏僅僅以Centos7 yum安裝爲例。
Ansible軟件默認不在標準倉庫中,須要用到repo源。
1.需在管理機器上安裝:
// 添加repo
[root@m01 ~]# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
// yum安裝ansilbe
[root@m01 ~]# yum install ansible -y
[root@m01 ~]# rpm -qa ansible
// 檢查ansible版本
[root@m01 ~]# ansible --version
ansible 2.9.2
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/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
2.添加主機清單
[root@m01 ~]# vim /etc/ansible/hosts
[app]
10.4.7.7
10.4.7.8
[sa] 分組下添加了兩個hosts
三、測試ansible
ping模塊用於測試ansible與被受控端的連通性
[root@m01 ~]# ansible sa -m ping
10.4.7.8 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.4.7.7 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
三、Ansible清單管理
主機清單路徑:/etc/ansible/hosts
/etc/ansible/hosts主機資產清單文件,用於定義被管理主機的認證信息, 例如ssh登陸用戶名、密碼以及key相關信息。如何配置Inventory文件
主機能夠是IP地址形式出現也能夠是主機名的形式出現,可是以主機名形式出現就必需要在ansible機器上有對應主機名和IP地址的hosts解析
主機:
1.主機支持主機名通配以及正則表達式,例如web[1:3].jason.com表明三臺主機
2.主機支持基於非標準的ssh端口,例如web1.jason.com:6666
3.主機支持指定變量,可對個別主機的特殊配置,如登錄用戶,密碼
4.主機組支持指定變量[group_name:vars],同時支持嵌套組[game:children]
主機組:
1.支持嵌套組,例如[game:children],那麼在game模塊下面的組都會被game所包含
2.支持指定變量,例如[game:vars]在下面指定變量java

編寫playbook的tomcat安裝配置
[root@jenkins tomcat]# cat tomcat.yaml

  • hosts: app
    remote_user: root
    vars:
    tomcat_version: 8.5.5
    tomcat_install_dir: /usr/local/python

    tasks:web

    • name: Install jdk1.8
      yum:
      name: java-1.8.0-openjdk
      state: present
    • name: Download tomcat
      get_url:
      url: http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
      dest: /tmp
    • name: Unarchive tomcat
      unarchive:
      src: /tmp/apache-tomcat-{{tomcat_version}}.tar.gz
      dest: "{{tomcat_install_dir}}/"
      copy: no
    • name: Start tomcat
      shell: cd {{tomcat_install_dir}} && mv apache-tomcat-{{tomcat_version}} tomcat8 && cd tomcat8/bin && nohup ./startup.sh &

自動化運維Ansible安裝部署及使用
自動化運維Ansible安裝部署及使用
自動化運維Ansible安裝部署及使用

相關文章
相關標籤/搜索