Ansible自动化部署2
接上篇文章Ansible自动化部署1
# ansible-playbook --version
验证加载效果
搭建Ansible框架
# mkdir test_playbooks
# cd test_playbooks
# mkdir inventory
# mkdir roles
# cd inventory
# vi testenv
[testservers]
test.example.com
[testservers:vars]
server_name=test.example.com
user=root
output=/root/test.txt
保存退出
# cd roles
# mkdir testbox
# cd testbox
# mkdir tasks
# cd tsks
# vi main.yml
- name: Print server name and user to remote testbox
shell:"echo 'Currently {{ user }} is logining {{ server_name }} ' > {{ output }}"
//创建了一个tasks测试任务,功能是在目标主机下去输出一行带有参数的语句到目标主机的某一个路径下
保存退出
返回test_playbooks
目录
创建一个任务入口文件
# vi deploy.yml
- hosts: "testservers" //对应inventory下的testenv文件下的testservers组标签
gather_facts: true //用来获取目标主机下的一些信息
remote_user: root //告诉Ansible在目标主机下使用root用户权限进行所有系统的文件操作
roles:
- testbox //进入这个目录进行接下来的任务执行
保存退出
# tree .
打印当前目录下的树状结构
配置主机的秘钥认证保证Ansible无需密码即可访问我们的目标主机,进行相应的部署操作
在进行ssh秘钥认证免密码之前需要在Ansible主机下去创建目标主机的dns记录
返回到root用户
# vi /etc/hosts
另起一行
10.1.0.... test.example.com
//相当于创建了一个本地的test.example.com的dns记录并且手动将test.example.com的dns记录解析为10.1.0....IP地址
保存退出
# exit
# ssh-keygen -t rsa
创建秘钥认证对
一路回车
这时私钥和公钥都保存在/home/用户/.ssh/目录下,私钥为id_rsa
,公钥为id_rsa.pub
# ssh-copy-id -i /home/用户/.ssh/id_rsa.pub root@test.example.com
指定用户的公钥
输入yes然后输入root密码,这样就可以把公钥传送给目标主机的root ssh目录下
测试是否可以不需要密码就可以访问到test.example.com这台主机当中# ssh root@test.example.com
# exit
退出
# ansible-playbook -i inventory/testenv ./deploy.yml
执行ansible-playbook的入口文件
# ssh root@test.example.com
查看Ansible是否执行成功