美文网首页
实验:Ansible+Python建立简单的临时配置分发服务

实验:Ansible+Python建立简单的临时配置分发服务

作者: 魔法学徒之歌 | 来源:发表于2021-09-20 09:19 被阅读0次

1、实验环境:bp一个阿里云的实验虚机,,选docker环境的 os比较新

https://developer.aliyun.com/adc/scenario/e6875b45034a4461b2a7769e06451657

# cat /etc/system-release

CentOS Linux release 7.7.1908 (Core)

# python -V

Python 2.7.5

2、安装ansible和 nginx(用来假装是前置的外部服务)

yum -y install ansible nginx lrzsz

3、准备一个测试数据 cmdb.csv

cat cmdb.csv

配置编号,名称,IP,负责人,所在项目

编号89757,test1,127.0.0.1,李雷,高数

编号89758,test2,172.16.2.222,韩梅梅,大物

# 放到nginx默认下载目录下

cd /usr/share/nginx/html/

rz

# 上传cmdb.csv文件

chmod 644 /usr/share/nginx/html/cmdb.csv

cat cmdb.csv

systemctl start nginx

# 下载配置看看,没毛病

cd /tmp

wget http://127.0.0.1/cmdb.csv

cat cmdb.csv

4、构建过程 cd /tmp;vi build.sh

#!/bin/bash

# 创建两级临时目录

mkdir -p /tmp/test/motd

cd /tmp/test

# 创建秘钥对和两个测试用户

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa > /dev/null

useradd test1;useradd test2

cp /root/.ssh/id_rsa.pub /tmp/

su - test1 -c "mkdir ~/.ssh;cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys"

su - test2 -c "mkdir ~/.ssh;cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys"

# 免ansible初次验证

sed -i 's/^#\(host_key_checking = False\)/\1/'  /etc/ansible/ansible.cfg

# 创建测试用ansible-Inventory文件,,

# 取了实验机的两个私有ip,因为新版本不支持一个ip多个用户操作了,同ip只取最后一个配置

ip2=`ip a|grep inet|grep -v 127.0.0.1|head -1|awk '{print substr($2,1,length($2)-3)}'`

echo -e "[1]

127.0.0.1 ansible_ssh_user=test1

[2]

"$ip2 "ansible_ssh_user=test2"> linshi

# 下载外部提供的配置表,替换ip

wget http://127.0.0.1/cmdb.csv >& /dev/null

sed -i 's/88.88/'"$ip2"'/g' cmdb.csv

# 根据表生成一堆配置

cat cmdb.csv|awk -F, '{print "######\n"$1"-"$2"\nIP:"$3"\n负责人:"$4"\n项目:"$5"\n######" > "/tmp/test/motd/"$3}'

cat cmdb.csv|awk -F, '{print "######\n"$1"-"$2"\nIP:"$3"\n负责人:"$4"\n项目:"$5"\n######" > "/tmp/test/motd/"$2}'

# 启动临时http服务

nohup python -m SimpleHTTPServer 8888 >& http8888.log &

# 创建小jo本,模拟ansible控制远端来下载文件,,

# 生产上我会取ip做key,实验中我只有一个机器,就使用username了

echo -e '#!/bin/bash

wget -O ~/motdfile http://localhost:8888/motd/`whoami`

echo "cat ~/motdfile" >>~/.bash_profile' > /tmp/test/1.sh

# 下发jo本执行

ansible -i linshi all -m script -a "/tmp/test/1.sh" >& /dev/null

5、验证

sh build.sh

# ansible调自定义命令查看结果

cd /tmp/test

ansible -i linshi all -m shell -a ". ~/.bash_profile"

# 最终想要的效果,手动切个进去康康

sshtest1@127.0.0.1

6、清除

# 销毁临时http服务,删除用户和目录

netstat -ntlp|grep 8888|awk '{print $7}'|awk -F/ '{print $1}'|xargs kill -9 >& /dev/null

userdel test1;userdel test2

cd /tmp

rm -rf /tmp/test /home/test*

【完工】

相关文章

网友评论

      本文标题:实验:Ansible+Python建立简单的临时配置分发服务

      本文链接:https://www.haomeiwen.com/subject/ieymgltx.html