Ansibleレポートは、ホストのリストを設定します

ヒール

Ansibleはじめに

AnsibleSaltStack人形は、すべての構成管理システム(構成管理システム)です
AnsibleSaltStackがあるPythonの、自動化ツールのコンパイラの運転・保守管理モジュールを使用しています。Ansibleというクライアント(使用した以外のSSHチャネルの送信)とSaltStackのクライアント(もののSaltStackを用いることもSSHのチャネルが、およびAnsibleジョークと比較して)、それはこの点で利点を有する、より安定したクライアントないクライアントは、より柔軟に移植され
比べない人形があるAnsible(使用しないクライアントSSHの使いやすいチャネルの送信)、およびログは、制御を集中します

Ansibleは、私たちはいくつかのバッチジョブを実行する、または一部が頻繁に反復作業を必要としないことができます。
たとえば:100台のサーバーにインストールされているNFSサービス、およびインストール後にサービスを開始します。
たとえば:一回は100台のサーバー上にファイルをコピーします。
例:新しいサーバーは、作業環境に追加されるたびに、あなたは常に同じ仕事を繰り返す必要があることを意味し、新しいサーバーにサービスを展開する必要があります。
シナリオでは、我々はに使用することができますAnsible

Ansible特長

  1. Ansible別途クライアント、インストールする必要はありませんSSH同等Ansibleクライアントを。
  2. Ansibleは、構成ファイルに記録されていてもよいSSHのアカウント暗号鍵ペアを接続して使用することができます。
  3. Ansibleだけで対応するツールがインストールすることができ、任意のサービスを開始する必要がありません。
  4. Ansibleは多数に依存しているPythonの一括管理を実現するためのモジュール。

Ansibleアーキテクチャ
Ansibleは、モジュールを管理するために使用され、モジュールがされるPythonの持っている制御端子と制御端子ニーズを必要とする、書き込みにPythonのために、Linuxの問題ではありませんが

  • ホストのリスト(HostInventory):Ansibleは、ポート、パスワード、IPなどを含め、ホスト情報管理によって記録。そして、論理的にグループ化します。
  • ABホック(コマンドライン):コマンドライン・コール管理モジュール制御端
  • プレイブック(脚本):YAML形式のファイル、1つのファイルで定義された複数のタスクは、関数呼び出しに必要なものを達成するためにホストモジュールを定義します
  • CoreModules(コアモジュール):主なアクションは、コアモジュールを呼び出すことによって、管理タスクを完了することです
  • CustomModules(カスタムモジュール):完全なコアモジュールは、複数の言語のサポートを完了することができません
  • プラグイン(プラグイン):完了補助モジュール機能
  • ConnectionPlugins(コネクタプラグ):ホストへの接続のために、管理端末とを接続します

Ansible設定

YUMインストールAnsible

Ansibleパッケージepelに部分的に依存ライブラリ、baseライブラリ

[root@Ansible ~]# yum install ansible -y
## 查看Ansible版本信息(版本号低的,看看epel源有吗)
[root@Ansible ~]# ansible --version
ansible 2.7.10
  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, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

上で指定Ansibleプロファイル位置が、Ansible便宜のためだけでなく、移植のためには、コンフィギュレーションファイルが固定されておらず、以下の順序に従って読み出します。

  • 可変$ANSIBLE_CONFIG情報
  • カレントディレクトリのansible.cfgファイル
  • 現在のユーザのホームディレクトリのansible.cfgファイル
  • /etc/ansible/ansible.cfg ファイル

一般的な構成

[defaults] #通用默认配置
inventory      /etc/ansible/hosts #被控制端IP或者DNS列表
library = /usr/share/my_modules/ ##默认搜寻模块的位置
remote_tmp = ~/.ansible/tmp #远程执行临时文件
local_tmp = ~/.ansible/tmp
plugin_filters_cfg = /etc/ansible/plugin_filters.yml
forks = 5 ##并行线程数
poll_interval = 15 ##回频率或轮询间隔时间
sudo_user = root ##sudo远程执行用户名
ask_sudo_pass = True ##使用sudo,是否需要输入密码
ask_pass = True ##是否需要输入密码
transport = smart ##通信机制
remote_port = 22 ##远程SSH端口
module_lang = C ##模块和系统之间通信的语言
module_set_locale = False
gathering = implicit ##控制默认facts收集(远程系统变量)
gather_subset = all
gather_timeout = 10
roles_path = /etc/ansible/roles ##使用playbook搜索Ansible roles
host_key_checking = False ##是否检查远程公钥指纹
sudo_exe = sudo ##sudo远程执行命令
sudo_flags = -H -S -n ##传递sudo之外的参数
timeout = 10 ##SSH超时时间
remote_user = root ##远程登录用户名
log_path = /var/log/ansible.log ##日志文件存放路径
module_name = command ##Ansible命令默认执行的模块
executable = /bin/sh ##执行的shell环境,用户shell模块
hash_behaviour = replace ##特定的优先级覆盖变量
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18 ##允许开启jinja2扩展模块
private_key_file = /path/to/file ##私钥文件存储位置
display_skipped_hosts = True ##显示跳过任何任务的状态
system_warnings = True ##禁用系统运行Ansible潜在问题警告
deprecation_warnings = True ##PlayBook输出禁用“不建议使用”警告
command_warnings = False ##command模块Ansible默认发出警告
nocolor = 1 ##输出带上颜色区别,0表示开启,1表示关闭
pipelining = False ##开启pipe SSH通道优化

[accelerate] ##accelerate缓存加速
accelerate_port = 5099 ##加速连接端口5099
accelerate_timeout = 30 ##命令执行超过时间,单位为s
accelerate_connect_timeout = 5.0 ##上一个活动连接的时间,单位为min
accelerate_daemon_timeout = 30 ##允许多个私钥被加载到daemon
accelerate_multi_key = yes ##任何客户端想要连接daemon都要开启这个选项

ホストのリスト

## 添加客户主机信息,client清单下两台主机(IP,用户,密码,端口)
[root@Ansible ~]# vim /etc/ansible/hosts
[client]
192.168.1.2 ansible_ssh_user='root' ansible_ssh_pass='redhat' ansible_ssh_port='22'
192.168.1.3 ansible_ssh_user='root' ansible_ssh_pass='redhat' ansible_ssh_port='22'

確認しAnsibleを
プロファイルできhost_key_checking = False、メモを削除最初のを防止するためにSSH通信することは指紋原因の公開鍵が必要ですAnsible通信障害を

## 用ping模块测试主机是否连通
[root@Ansible ~]# ansible client -m ping
192.168.1.2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.1.3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
## -m:调用什么模块。-a:执行什么动作
[root@Ansible ~]# ansible client -m command -a "df -h"
192.168.1.2 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 3.1G 14G 18% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.8M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 173M 842M 18% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.1.3 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 3.1G 14G 18% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 173M 842M 18% /boot
tmpfs 98M 0 98M 0% /run/user/0

キー接続を使用します

## 创建密钥对
[root@Ansible ~]# ssh-keygen -t rsa
## 发送到相应的主机上
[root@Ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
[root@Ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
## 删除配置文件IP后面的账号密码
[root@Ansible ~]# vim /etc/ansible/hosts
[client]
192.168.1.2
192.168.1.3
## 连接测试
[root@Ansible ~]# ansible client -m command -a "hostname"
192.168.1.3 | CHANGED | rc=0 >>
Client2
192.168.1.2 | CHANGED | rc=0 >>
Client1

グループは他のグループを含めることができます

## 重新定义主机清单(组调用其他组在组名后面加上:children)
[root@Ansible ~]# vim /etc/ansible/hosts
[web]
192.168.1.2

[nfs]
192.168.1.3

[local]
localhost ansible_connection=local

[hosts:children]
web
nfs
local
## 执行命令测试连通性
[root@Ansible ~]# ansible web --list-host
  hosts (1):
    192.168.1.2
[root@Ansible ~]# ansible nfs --list-host
  hosts (1):
    192.168.1.3
[root@Ansible ~]# ansible local --list-host
  hosts (1):
    localhost
[root@Ansible ~]# ansible hosts --list-host
  hosts (3):
    192.168.1.2
    192.168.1.3
    localhost
## Ansible自带一个all组,为全部主机
[root@Ansible ~]# ansible all --list-host
  hosts (3):
    192.168.1.2
    192.168.1.3
    localhost

代わりにエイリアスを使用してのIP

## 编辑文件
[root@Ansible ~]# vim /etc/ansible/hosts
[web]
web1 ansible_ssh_host=192.168.1.2

[nfs]
nfs1 ansible_ssh_host=192.168.1.3

[local]
localhost ansible_connection=local

[hosts:children]
web
nfs
local
## 列出所有主机
[root@Ansible ~]# ansible hosts --list-host
  hosts (3):
    web1
    localhost
    nfs1

-i指定されたファイル

[root@Ansible ~]# vim hosts
[client]
192.168.1.2
192.168.1.3
[root@Ansible ~]# ansible client -m command -a "w" -i ./hosts
192.168.1.2 | CHANGED | rc=0 >>
 20:08:04 up 14:03, 2 users, load average: 0.00, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.1 20:08 0.00s 0.14s 0.00s w
root pts/1 192.168.1.254 14:04 6:28 0.38s 0.38s -bash
192.168.1.3 | CHANGED | rc=0 >>
 20:08:04 up 14:02, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.1 20:08 0.00s 0.14s 0.00s w
root pts/1 192.168.1.254 14:42 1:06m 0.43s 0.43s -bash

おすすめ

転載: www.cnblogs.com/songguoyou/p/11883241.html