准备好安装了Ansible的主机,作为实验环境。
有一台新安装的Centos7系统,利用ansible在主机上完成以下操作:
- 主机初始化设置,主要是yum
- 安装python3
- 安装docker,并且制作一个ansible的镜像
- SSH和用户账号安全设置
准备工作
准备好一台安装了Centos7系统的主机,然后去ansible的主机上对目标主机进行操作。
我这里的ansible也是新安装的,所以如果遇到一些没有的工具,也会在遇到的时候一步一步进行添加。下面是汇总的内容。
对于一台新装好的ansible,还是会缺少很多依赖项,有些和特定模块关联的比较紧密,可以在使用特定模块的时候再安装。
还有一些使用范围比较广,建议先装好:
- yum 安装 sshpass
- 目标主机安装了python3,就需要将pip更新到最新,并且安装好selinux
修改ansible.cfg配置文件
我的实验环境,为了测试方便,暂时只有下面3项做了设置:
[defaults]
#host_key_checking = False
inventory = ~/hosts
vault_password_file = ~/vault_password_file
配置文件第一行的[defaults]不能省。
添加主机
编辑 /etc/ansible/hosts 添加主机信息:
host1 ansible_host=192.168.24.172
我的实验环境是直接放到了家目录里了
先用ping模块测试一下连通性:
[root@Ansible ~]# ansible host1 -m ping -k
SSH password:
host1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@Ansible ~]#
这里使用了-k参数,手动输入密码。
测试联通性,可以再加上-c参数,指定local。不过这里要验证一下ssh连接。
安装 sshpass
如果是第一次使用,可能会提示需要安装sshpass。这个简单,yum安装即可:
$ yum install sshpass
添加密码信息
最好的做法是用SSHKey实现免密码登录。这里讲使用密码的情况。
为了方便,也可以把密码加到配置中,这样不用每次都输入密码:
host2 ansible_host=192.168.24.172 ansible_ssh_pass=123456
这样做,密码就是明码存放了,很不安全。下面有更安全的做法。
加密保存密码
使用 ansible-vault 来加密敏感信息
修改配置文件
这步不是必须的,运行命令的时候可以加上参数 --vault_password_file 来指定你的密码文件。不过通过设置就可以把这个参数省了:
$ vi /etc/ansible/ansible.cfg
# If set, configures the path to the Vault password file as an alternative to
# specifying --vault-password-file on the command line.
vault_password_file = ~/vault_password_file
使用openssl来生成随机密码
使用 openssl 来生成随机的base64编码的内容:
$ openssl rand -base64 128 -out vault_password_file
$ chmod a-w vault_password_file
$ chattr +i vault_password_file
文件生成后,对文件做了一些保护,防止文件被修改。修改文件的ugo权限只对普通用户有效,root依然可以修改文件。后面的命令可以锁定文件,即使root也无法修改了,防止对文件的意外操作。
如果需要修改或者删除文件,可以先把文件解锁,只要把命令的 +i 改成 -i 就可以了:
$ chattr -i vault_password_file
生成加密后的字符串
下面是使用 ansible-vault 来生成加密后的字符串:
[root@Ansible ~]# ansible-vault encrypt_string "123456" --name ansible_ssh_pass
ansible_ssh_pass: !vault |
$ANSIBLE_VAULT;1.1;AES256
33336539373437373161326537323836343163633532396235383334326562303134626565613537
3134313631393931376361363761313165393966613831360a343338353765326331663433613533
31636238613133363639336130613264386366363931663230333663363062333836323730383563
6562626265393535310a62373263386363376536306663626530326531666137346432