ip user sudo_user port usage
192.168.48.81 ansible root 29922 nagios & ansible control
192.168.48.82 ansible root 29922 nagios node1 & boston1
192.168.48.83 ansible root 29922 target host
192.168.48.84 ansible root 29922 target host
192.168.48.85 ansible root 29922 nagios node1 & boston2
192.168.48.86 ansible root 29922 target host
192.168.48.87 ansible root 29922 target host

需求

  1. 81不能直接访问83,84,86,87,可以通过82,85堡垒机变更部署
  2. 所有服务器变更ssh端口22->29922,同时禁用root远程登录,允许ansible用户sudo到root
  3. sshkey 81->82,85,82->83,84,85->86,87

控制机

安装方法

http://www.cnblogs.com/liujitao79/p/4193368.html

inventory

#/etc/ansible/hosts
[center]
192.168.48.81 [idc1]
192.168.48.82
192.168.48.83
192.168.48.84 [idc2]
192.168.48.85
192.168.48.86
192.168.48.87

ssh管理方式测试

# ansible idc1 -u root -k -m ping
SSH password: # results
192.168.48.82 | success >> {
"changed": false,
"ping": "pong"
} 192.168.48.83 | success >> {
"changed": false,
"ping": "pong"
} 192.168.48.84 | success >> {
"changed": false,
"ping": "pong"
}

服务器初始化

使用ssh password方式变更运维环境, 包括以下内容

1)建立ansible用户

2)sshd配置

3)sshkey

变更完成后,使用sshkey方式部署应用环境

控制机->堡垒机

81

ssh-keygen -b 2048 -t rsa -f /tmp/ansible.pem -q -N ''
ssh-keygen -b 2048 -t rsa -f /tmp/bastion82.pem -q -N ''
ssh-keygen -b 2048 -t rsa -f /tmp/bastion85.pem -q -N '' mkdir -p /etc/ansible/keys
cp /tmp/{*.pem, *.pem.pub} -> /etc/ansible/keys

82 & 85

useradd ansible
su - ansible -c 'mkdir -p /home/ansible/.ssh'
su - ansible -c 'chmod 700 .ssh'
su - ansible -c 'echo "ssh-rsa ABBAB3NzaC1yc2EAAAADAQABAAABAQD4pbUECUaCod6dnNPJuqerZBOcqKiHc+JiXsJmJijOiTe7Xxyh0FEXqEAV7EOSOOe79LzZIsjq5iD6aPLZS7IKm/j8oGU0pB7s6Wz/Z8SWWBEpainBETIi0JgR2v/AmqSWi72o+d9isDSxkhfDZxIHXtlHo+rQ6iKytxTmlrplZwj+MDIo7g8Q3UXCa84b85HUaahS0VPATm8SM+YG89I6IV6NKL43N5guzfOKdxRrwOS6J2aGlq2UYMnC6emYXi/lKN92xvFbebyo5+KtbeLXjHuS1YvYdtvdpxvkOd2TboI9fB2qPKyt0LMv70nCJAUix7kBYcnaO4xe4vebfHpd ken@ken-HP6531s" > .ssh/authorized_keys' or su - ansible -c 'curl http://install.local/dc.pem.pub -O .ssh/authorized_keys' su - ansible -c 'chmod 600 .ssh/authorized_keys'

测试

ansible 192.168.48.82 -u ansible --private-key=/etc/ansible/keys/ansible.pem -m ping
192.168.48.82 | success >> {
"changed": false,
"ping": "pong"
} ansible 192.168.48.85 -u ansible --private-key=/etc/ansible/keys/ansible.pem -m ping
192.168.48.85 | success >> {
"changed": false,
"ping": "pong"
}

堡垒机->目标机

83 & 84 & 86 & 87

groupadd -g 501 ansible
useradd -u 501 -g 501 ansible
mkdir -p /home/ansible/.ssh && chown -R ansible:ansible /home/ansible/.ssh && chmod 700 /home/ansible/.ssh cp bastion82.pem.pub(83,84),bastion85.pem.pub(86,87) -> /home/ansible/.ssh/authorized_keys
chown ansible:ansible /home/ansible/.ssh/authorized_keys && chmod 600 /home/ansible/.ssh/authorized_keys

82

# cp bastion82.pem -> /tmp
ssh -i /tmp/bastion82.pem ansible@192.168.48.83
ssh -i /tmp/bastion82.pem ansible@192.168.48.84
# rm /tmp/bastion82.pem

控制机->目标机

/etc/ansitble/ssh.config

192.168.48.82 bastion-82
192.168.48.82 bastion-85

/etc/ansitble/ssh.config

ost bastion-82
User ansible
Hostname 192.168.48.82
IdentityFile /etc/ansible/keys/ansible.pem
StrictHostKeyChecking no Host bastion-85
User ansible
Hostname 192.168.48.85
IdentityFile /etc/ansible/keys/ansible.pem
StrictHostKeyChecking no Host server-83
User ansible
Hostname 192.168.48.83
IdentityFile /etc/ansible/keys/bastion82.pem
StrictHostKeyChecking no
ProxyCommand ssh -q -A -x -l ansible -i /etc/ansible/keys/ansible.pem bastion-82 -o 'StrictHostKeyChecking=no' -W %h:%p Host server-84
User ansible
Hostname 192.168.48.84
IdentityFile /etc/ansible/keys/bastion82.pem
StrictHostKeyChecking no
ProxyCommand ssh -q -A -x -l ansible -i /etc/ansible/keys/ansible.pem bastion-82 -o 'StrictHostKeyChecking=no' -W %h:%p Host server-86
User ansible
Hostname 192.168.48.86
IdentityFile /etc/ansible/keys/bastion85.pem
StrictHostKeyChecking no
ProxyCommand ssh -q -A -x -l ansible -i /etc/ansible/keys/ansible.pem bastion-85 -o 'StrictHostKeyChecking=no' -W %h:%p Host server-87
User ansible
Hostname 192.168.48.87
IdentityFile /etc/ansible/keys/bastion85.pem
StrictHostKeyChecking no
ProxyCommand ssh -q -A -x -l ansible -i /etc/ansible/keys/ansible.pem bastion-85 -o 'StrictHostKeyChecking=no' -W %h:%p
ssh -F /etc/ansible/ssh.config bastion-82
ssh -F /etc/ansible/ssh.config bastion-85
ssh -F /etc/ansible/ssh.config server-83
ssh -F /etc/ansible/ssh.config server-84
ssh -F /etc/ansible/ssh.config server-86
ssh -F /etc/ansible/ssh.config server-87

ansible测试环境的更多相关文章

  1. 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

    一.环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新 ...

  2. tidb测试环境安装,离线部署

    1.环境以及规划 机器:centos7.5 ; 文件系统为ext4:内存16g:cpu8核,共三个节点: ip hostname roles --- tidb tipd tikv --- tidb t ...

  3. tidb测试环境搭建

    tidb ansible 部署方式环境检查过于严格,测试环境往往达不到标准,需调整一些参数才能部署成功. 基于tidb2.0版本需要调整的参数 [tidb@ansible01 tidb-ansible ...

  4. Linux测试环境搭建的学习建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...

  5. iOSIPV6简单测试环境搭建

    应苹果官方要求,iOS应用必须适配IPV6才能通过审核,这里分享一个简单的ipv6测试方法 一.工具原料 1.1 Mac电脑一台 1.2 iPhone手机两部 1.3 数据线一根 二.步骤方法 2.1 ...

  6. NodeJs 开发微信公众号(二)测试环境部署

    由于卤煮本人是做前端开发的,所以在做公众号过程中基本上没有遇到前端问题,在这方面花的时间是最少的.加上用了mui框架(纯css界面)和自己积累的代码,很快地开发出了界面来.接着是后台开发.卤煮选的是n ...

  7. 用java开发微信公众号:测试公众号与本地测试环境搭建(一)

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...

  8. 测试环境搭建心得 vs2008+SQL2008 PHP+APACHE+mysql Team Foundation Server2013

    大四即将结束,大学的最后一个假期,找到一份实习工作,担任测试工程师.在过年前的最后一周入职,干了一周的活儿.主要工作就是搭建测试环境. VMware 主要熟悉VMware软件,装系统基本都没什么问题. ...

  9. Rails的三种环境----开发环境,生产环境和测试环境

    Rails 的三个环境 Rails 的应用程序预设提供了三种不同的执行模式: development environment 开发模式,用在你的开发的时候 test environment 测试模式, ...

随机推荐

  1. maven部署Tomcat(出现空白页面,最终解决)

  2. 【记录一下】从0到1 我的python开发之路

    请设计实现一个商城系统,商城主要提供两个功能:商品管理.会员管理. 商品管理: - 查看商品列表 - 根据关键字搜索指定商品 - 录入商品 会员管理:[无需开发,如选择则提示此功能不可用,正在开发中, ...

  3. [JavaScript]Prototype继承

    JavaScript相对于其他的编程语言是比较简单的,只要吃透了Prototype和Closure(闭包),基本上就可以说精通JavaScript了. JavaScript里如何实现向Java语言的O ...

  4. [Groovy]static typing

    一般想到Groovy是JVM上的动态语言,都不知道它还有Static Typeing的功能 import groovy.transform.TypeChecked void someMethod() ...

  5. Ubuntu系统中连接TFS的Git地址注意事项

    在Ubuntu中安装Git后,配置远程Git服务器地址,如果是TFS的Git仓库地址,则需要使用IP地址,否则可能出现识别不出来的问题; 再者,如果你想要在Ubuntu的浏览中访问TFS的Git仓库U ...

  6. 09-排序2 Insert or Merge (25 分)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  7. pandas关于其他merge用法(df1的的列索引和df2的行索引对应时候的)

  8. spring aop实现log 日志跟踪

    之前写的那篇是基于springboot的(https://www.cnblogs.com/yaoyuan2/p/10302802.html),由于遗留项目用的是spring,因此需要在spring基础 ...

  9. 8 Operator overloading

    在类中,Groovy支持你使用标准的操作符.例如,如果你想使用a+b操作(a和b来自于Z类),那么你在Z类中,必须实现(implement)plus(Zname)方法.

  10. 2048小游戏(Java)(swing实现)(二)

    这里是上一次的成果,只能用鼠标点,没法用键盘 最近扩充了一下知识面,实现了用键盘操控2048小游戏 但是还是不支持同时使用键盘和鼠标同时操作 import javax.swing.*; //impor ...