配置运行Ansible

来源:互联网 发布:linux 提权漏洞 编辑:程序博客网 时间:2024/06/02 08:53

配置Ansible环境

note:在这之后博主的实验环境都是使用源码包安装的Ansible环境。

1.在运行ansible命令时,命令将会按照预先设定的顺序查找配置文件。

(1)ANSIBLE_CONFIG:首先,ansible命令会检查环境变量,及这个环境变量将指向的配置文件。
(2)./ansible.cfg:其次,将会检查当前目录下的ansible.cfg配置文件。
(3)~/.ansible.cfg:再次,将会检查当前用户home目录下的.ansible.cfg配置文件。
(4)/etc/ansible/ansible.cfg:最后,将会检查在用软件包管理工具安装ansible时自动产生的配置文件。

如果是通过操作系统软件包管理工具或pip安装,那么你在/etc/ansible目录下应该已经有了ansible.cfg配置文件;如果你是通过GitHub仓库安装的,在你赋值的仓库中examples目录下可以找到ansible.cfg,可以把它拷贝到/etc/ansible目录下。

2.使用环境变量方式来配置

大多数的ansible参数可以通过设置带有ANSIBLE_开头的环境变量进行配置,参数名称必须都是大写字母,如下配置项:
export ANSIBLE_SUDO_USER=root

设置环境变量之后playbook可以直接引用。

3.设置ansible.cfg配置参数

常见配置参数:
inventory–这个参数表示资源清单inventory文件配置,资源清单就是一些ansible需要链接管理的主机列表。安装完ansible之后默认所在的inventory列表配置如下:
inventory = /etc/ansible/hosts

library–Ansible的操作动作,无论是本地或远程,都使用一小段代码来执行。这小段代码成为模块,这个library参数就是只想存放在Ansible模块的目录。Ansible支持多个目录方式,只要用冒号(:)隔开就可以,同时也会检查当前执行playbook位置下的./library位置。默认的配置如下:
library = /usr/share/ansible

forks–设置默认情况下Ansible最多能有多少个进程同时工作,默认设置最多5个进程并行处理。具体需要设置多少个,可以根据控制主机的性能和被管理节点的数量来确定。默认参数配置如下:
forks = 5

sudo_user–这个设置默认执行命令的用户,在playbook中重新设置这个参数。默认参数配置如下:
sudo_user = root

remote_port–这个是指定链接被管节点的管理端口,默认22。除非设置了特殊的SSH端口,不然这个参数一般是不需要修改的。默认配置如下:
remote_port = 22

host_key_checking–这个设置是否检查SSH主机的秘钥。可以设置为True或者False。默认配置如下:
host_key_checking = false

timeout–这是设置SSH链接的超时间隔,单位是秒。默认配置实例如下:
timeout = 60

log_path–Ansible系统默认是不记录日志的,如果想把Ansible系统的输出记录到日志文件中,需要设置log_path来指定一个存储Ansible日志的文件。配置实例如下:
log_path = /var/log/ansible.log

4.配置Linux主机SSH无密码访问

4.1生成秘钥

#ssh-keygen -t rsa

4.2将秘钥拷贝到预管理的节点上

#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.116.130

尝试ssh root@192.168.116.130发现还是不行。查看被管理节点上的日志。

这里写图片描述

错误的属组关系,因为这台机器上部署了devstack,root目录有附加权限:
这里写图片描述
这里写图片描述

属组有额外写权限,去掉就好:

#chmod g-w /root

同时在被控制节点上保证 /root/.ssh有700权限。
/root/.ssh/authorized_key有600权限。

5.Ansible小试身手

启用ansible,如果使用github安装的源码包则需要使用env-setup启动

source ./hacking/env-setup -qexport ANSIBLE_SUDO_USER=rootecho "127.0.0.1" > ~/ansible_hostsexport ANSIBLE_HOSTS=~/ansible_hosts

修改主机与组配置

#vim /etc/ansible/hosts#web1#devstack192.168.116.129192.168.116.130[webservers]#web1#devsack192.168.116.129192.168.116.130

对单台机器ping操作:
这里写图片描述
对组器进行ping操作:
这里写图片描述
在这里测试时在控制主机与被管理节点之间配置了SSH证书信任。如果没有用证书认证,则需要执行ansible命令时添加-k参数,在提示“SSH password:”时输入root(默认)账号密码。实际生产环境中,大多数更倾向于使用Linux普通用户账户进行连接并通过sudo命令实现root权限,格式为:
ansible webservers -m ping -u ansible -sudo

5.2在被管理节点上批量执行命令

在用户home目录下创建一个资源清单文件inventory.cfg内容如下:

# cat inventory.cfg[webservers]192.168.116.129192.168.116.130

用ansible的shell模块在webservers组的个服务器上显示“hello ansible!”命令如下:

# ansible webservers -m shell -a '/bin/echo hello ansible!' -i inventory.cfg

这里写图片描述

用ansible的command模块实现同样的结果

#ansible webservers -m command -a '/bin/echo hello ansible!' -i inventory.cfg

这里写图片描述

0 0
原创粉丝点击