playbooks框架部署远程主机
进入到ansible和python环境
进入python3.6虚拟环境
#su - deploy
#source .py3-a2.5-env/bin/activate
加载ansible 2.5版本
#source .py3-a2.5-env/ansible/hacking/env-setup -q
验证ansible加载效果
#ansible-playbook --version
编写playbooks框架
新建一个目录和多个目录
#mkdir test_playbooks
#cd test_playbooks/
#mkdir inventory roles
进入到 inventory,创建testenv文件,
# cd inventory
#vi testenv
添加目标主机服务地址
[testservers]
test.example.com
[testservers:vars]
server_name=test.example.com
user=root
output=/root/test.txt
退回到上一级目录
#cd ../
进入roles目录,创建子目录
#cd roles
#mkdir -p testbox/tasks
进入子目录,创建main.yml的文件,作为playbooks的主配置文件
#cd testbox/tasks/
#vi main.yml
添加测试任务,保存退出
- name: Print server name and user to remote testbox
shell: "echo 'Currently {{ user }} is logining {{ server_name }}' > {{ output }}"
返回到test_playbooks目录
#cd ../../..
创建一个playbooks任务入口文件,保存退出
#vi deploy.yml
- hosts: "testservers" # 对应testenv文件下主标签,用定义调用标签下目标主机
gather_facts: true # 获取目标主机信息
remote_user: root # 告诉ansible在目标主机下,使用root账户权限,进行所有系统的文件操作
roles: # 进入roles下testbox任务目录,进行接下来的任务执行
- testbox
打印playbooks目录下的树状结构
#tree .
配置ansible主机和目录主机的密钥认证
返回root用户
#su - root
编辑hosts
#vi /etc/hosts
添加dns记录 test.example.com
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.96.151 test.example.com
返回deploy用户
#exit
给deploy用户创建一个密钥认证
#ssh-keygen -t rsa
一直回车
这时候生成的公钥和私钥都在同一个目录下/home/deploy/.ssh/
指定deploy用户的公钥
#ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub root@test.example.com
输入目标主机的密码,就可以建立连接了
测试不使用密码连接主机
#ssh root@test.example.com
测试完毕,返回到deploy用户下
#exit
进入到test_playbooks目录下,执行ansible-playbook下的deploy.yml文件。此时playbooks执行完成
#ansible-playbook -i inventory/testenv ./deploy.yml
登录到目标主机
#ssh root@test.example.com
查看当前目录下test.txt 。成功把参数写进入了
#cat test.txt
已成功将乐谱演奏给听众!!
最新文章
- HTML5 程序设计 - 使用HTML5 Canvas API
- SQList
- 深入理解闭包系列第三篇——IIFE
- Spring源码阅读:IOC容器的设计与实现(二)——ApplicationContext
- setTimeout()与setInterval()——走马灯效果
- 安装 SQL server 2008 R2
- Oracle Goldengate REPLICAT启动时报正在运行解决办法
- Linux后台开发常用工具
- activiti自定义流程之自定义表单(二):创建表单
- iOS 设置connect超时
- Top 10 Mapping APIs: Google Maps, Microsoft Bing Maps and MapQuest
- 根据IP地址获得地理位置
- 简述负载均衡&;CDN技术(转)
- java在string和int相互转化
- .net 4.0 中的特性总结(二):默认参数、命名参数
- [2019.03.21]LF, CR, CRLF and LFCR(?)
- React(七)独立组件间的共享Mixins
- hive 数值计算函数
- 深度优先遍历(DFS)(转)
- vue-all