ansible系列(安装和使用)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible系列(安装和使用)相关的知识,希望对你有一定的参考价值。
ansible的安装和使用
-
介绍:
ansible是一个自动化运维工具,通过SSH协议管理服务器,基于模块来完成自动化任务,ansible完成批量性任务,自动部署各种服务和环境.
-
安装
使用python3的pip工具安装:pip3 install ansible
-
开始使用:
- 管理的前提条件:
管控机可通过ssh连接受控机. 建议设置密钥认证.明文密码不安全.
管控端用户和受控端用户都是普通用户.
生成ssh密钥的命令:
ssh-keygen -t rsa
私钥和公钥生成后默认在~/.ssh目录下,ansible管控端的公钥需要放在受控端的.ssh/authorized_keys文件中.
-
执行命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] -p200 这条命令会将公钥存放到authorized_keys文件中。 -i 选项指定要传输的公钥文件 指定用户和IP,端口等信息。
-
ssh代理: ssh-agent
ssh-agent 可管理私钥。
使用不同密钥连接不同主机,ssh-agent可自动选择对应的密钥进行认证。
密钥设置密码时,也需要使用ssh-agent来管理。
启动ssh代理并添加密钥: ssh-agent bash 执行后会在当前shell中启动一个默认shell. ssh-agent在子shell中执行。 eval ssh-agent 进入新创建的子shell,会启动一个ssh-agent进程。 ssh-agent -k 关闭ssh-agent代理。
-
ssh-agent管理密钥:
将私钥添加到ssh代理: ssh-add ~/.ssh/id_rsa_custom 查看ssh代理中已经添加了那些私钥: ssh-add -l 列出代理中所有私钥对应的公钥内容: ssh-add -L 从代理中移除某个已经添加的私钥: ssh-add -d 要移除的私钥名称 清空代理中的所有私钥: ssh-add -D 临时锁定ssh代理: ssh-add -x 解锁ssh代理: ssh-add -X
-
配置主机清单(Inventory):
ansible的配置清单为: /etc/ansible/hosts sudo mkdir /etc/ansible/ sudo vim /etc/ansible/hosts [test] 组名称 192.168.1.1 ansible_port=200
-
测试
ansible test -m ping
-
生成密钥指定输出文件名称的方式:
在管控端执行: $ssh-keygen -t rsa -f id_rsa-test ssh-copy-id -i ~/.ssh/id_rsa-test.pub [email protected] -p200 ssh -p200 [email protected] [email protected]‘s password: 仍提示输入密码,说明没有找到对应的私钥。 ssh-agent bash eval ssh-agent ssh-add ~/.ssh/id_rsa-test 再次ssh -p2020 [email protected] 登录,已经免密钥登录成功。
-
配置清单详解
- 分组功能:
将同一类型的应用主机分为一组,通过组名管理组内的所有主机。
例如: [web] 192.168.1.3 [db] 192.168.1.5 支持在组内嵌套组: 例如: [webA] 192.168.1.3 [webB] 192.168.1.4 [web:children] //表示当前组中存在子组。 webA webB 建议采用在组内嵌套组的方法,这样看起来逻辑更清晰。
- 支持INI配置
例如: [web] 192.168.1.3 [db] 192.168.1.5 支持YAML语法 YAML语法: 第一行组名 第二行使用一个空格作为缩进。使用hosts关键字。 第三行开头使用两个空格作为缩进。 第四行开头使用两个空格作为缩进。 例如: test: hosts: 192.168.1.1 test1: ansible_host: 192.168.1.5 ansible_port: 150 192.168.1.6: 在组中嵌套组的YAML写法: all: children: web: children: webA: hosts: 192.168.1.3: webB: hosts: 192.168.1.4: 上述配置说明: web组有两个子组,分别为webA组和webB组,而这两个组分别有自己组内的主机。 建议采用YAML语法。
- 分组功能:
以上是关于ansible系列(安装和使用)的主要内容,如果未能解决你的问题,请参考以下文章