運用・保守Ansibleの自動インストールと展開

1、SSH分布

ansible自動展開条件
1.勧告がリモート接続を確立するには、SSHキーの方法に基づいて
リモート接続を確立2.パスワードベースのsshの方法を(推奨されません)

確保する必要性を展開する前管理主机受控主机に基づいて行うことができるssh密钥方法远程连接

管理主机各SSHキー(プライベートおよびパブリック)、公開鍵配布を生成します受控主机

sshpassをインストール1.

[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

[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

2、インストールAnsible

yumの例をインストールし、ここだけCentos7に多くのインストール方法は、あります。

Ansibleは、標準のデフォルトのソフトウェアレポジトリに、必要がレポソースを使用しません。

インストールする管理機では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
[sa]
10.4.7.7
10.4.7.8

加え次の二つのホスト[SA]パケット

3、試験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"
}

3、Ansible在庫管理

ホストのリストのパス:は/ etc / ansible /ホスト
などのsshログインユーザー名、パスワード、およびキー関連情報として管理対象ホストの認証情報を、定義は/ etc / ansible /ホストホスト資産マニフェストファイル。インベントリファイルを構成する方法

ホストは、フォームのIPアドレスは、ホスト名が表示されるの形であってもよいことができますが、ホスト名の形式で表示されますがansibleに対応するホスト名とマシンのIPアドレスを持っているホストを解決する必要があります

ホスト:
1.ホストサポートワイルドカードホスト名と正規表現、例えばウェブ[1:3]の3つのホストの.jason.com代表
2 SSHホストは、例えばweb1.jason.com:6666ため、非標準ポートをサポートする
3。ホストは、特別な設定は、ユーザーのログイン、パスワードとして、個々のホストであることが指定された変数をサポートし
、サポートネストされたグループ:4.サポートホストグループ指定された変数[varsのGROUP_NAME] [ゲーム:子供]

ホストグループ:
1.サポートネストされたグループ、例えば[ゲーム:子供]、その後、ゲームはゲームに含まれるモジュールの下に設定されます。
例えば、2をサポート指定された変数を[ゲームを:VARS]は以下の変数を指定します。

  • 接続に基づきパスワード
[root@m01 ~]# cat /etc/ansible/hosts

// 方式一、主机+端口+密码
[webservers]
10.0.0.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.0.0.41 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'

// 方式二、主机+端口+密码
[webservers]
web[1:2].jason.com ansible_ssh_pass='123456'

// 方式三、主机+端口+密码
// 添加三台主机至webserver【low版】
[webservers]
web1.jason.com
web2.jason.com
web3.jason.com

// 添加三台主机至webserver【改良版】
[webservers]
web[1:3].jason.com

// 添加三台主机至webserver【密码版】
[webservers]
web1.jason.com ansible_ssh_pass='123456'
web2.jason.com ansible_ssh_pass='123456'
web3.jason.com ansible_ssh_pass='123456'

// 添加三台主机至webserver【密码改良版】
[webservers]
web[1:3].jason.com ansible_ssh_pass='123456'

// 添加三台主机至webserver【密码拆分版】
[webservers]
web1.jason.com
web2.jason.com
web3.jason.com
[webservers:vars]
ansible_ssh_pass='123456'
  • キーベースの接続には、公開鍵と秘密鍵とホストに発行された公開鍵を作成する必要があります
// 利用非交换式工具实现批量分发公钥与批量管理服务器
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

// 方式一、主机+端口+密钥
[group_name]
10.0.0.31:22
10.0.0.41

// 方式二、别名+主机+端口+密钥
[group_name]
nfs-node1 ansible_ssh_host=10.0.0.31 ansible_ssh_port=22
  • ホストグループの使用
// 方式一、主机组变量+主机+密码
[apache]
web1.jason.com
web2.jason.com
web3.jason.com
[apache:vars]
ansible_ssh_pass='123456'

// 方式二、主机组变量+主机+密钥
[nginx]
10.0.0.7
10.0.0.8

// 定义多组,多组汇总整合
// webservers组包括两个子组[apapche,nginx]
[webservers:children]
[group_name1]
[nginx]
  • ansible [ホストモジュール名] --list-ホスト
//  查看该主机模块中所定义的主机的IP地址
[root@m01 ~]# ansible nginx --list-hosts
 hosts (2):
  10.0.0.7
  10.0.0.8

おすすめ

転載: www.cnblogs.com/jasonminghao/p/12635384.html