美文网首页
实验: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