ansible 实现自动化部署ambari(纯离线)反思优化

225 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

背景

最近加入了掘金,在搬csdn上的文章ansible 实现自动化部署ambari(纯离线)时发现之前的问题一直没解决,加上最近又部署一套集群,细微之处做了些许改动。

配置hosts映射(主节点)优化

#! /bin/bash
echo "0.0.0.0   0.0.0.0" >> /etc/hosts;
for i in {001..26};
do
#在shell中默认是8进制,10#是转成10进制
echo "136.192.61.$[10#$i+190-1] pass-eda-hdp-$i" >> /etc/hosts;
done

应改为

#! /bin/bash
#! /bin/bash
echo "******** add host -> hosts ********"
# ip 和 hostname 应改为集群对应的
for i in {01..10}
do
echo "192.168.111.2$i node$i" >> /etc/hosts;
done

cp /etc/hosts /opt/srcConfig/system/ 
# 拷贝到配置文件源目录,这里只是方便管理统一的配置文件,非必要操作
echo "******** END ********"

配置ansible的hosts(ansible使用的ip和定义主机组的映射)同上修改

或者采用ssh脚本中的方法获取hosts文件

#! /bin/bash
ssh-keygen -t rsa
# 192.168.111 改为集群所在网段(和hosts中配置对应)
#此处$2改为$1
ALL_CLIENTS=`cat /etc/hosts| grep "192.168.111" | awk '{print $2}'`
for client in $ALL_CLIENTS
do
        echo "=============copy-ssh-id $client============="
        ssh-copy-id $client
done                    

应改为

#! /bin/bash
echo "******** add ansible host -> ansible hosts ********"
# ip 和 hostname 应改为集群对应的
echo "[test]" >> /etc/ansible/hosts # 主机组(所有节点)名称
for i in {01..10}
do
echo "192.168.111.2$i" >> /etc/ansible/hosts;
done
#或者此处改为,如果想用主机名awk就用$2
ALL_CLIENTS=`cat /etc/hosts| grep "192.168.111" | awk '{print $1}'`
for client in $ALL_CLIENTS
do
        echo "$client" >> /etc/ansible/hosts;
done  

echo "[testmaster]" >> /etc/ansible/hosts # 主机组(主节点)名称
echo "192.168.111.201" >> /etc/ansible/hosts

echo "[testslave]" >> /etc/ansible/hosts # 主机组(从节点)名称
for i in {02..10}
do
echo "192.168.111.2$i" >> /etc/ansible/hosts;
done

echo "******** END ********"                           

总结

因为各个省份,公司要求都不一样,使用配置文件来完成变量定义,或者是用参数导入,如果更换环境,或在其他地方部署会方便的多,这个依然还没有做好