本文已参与「新人创作礼」活动,一起开启掘金创作之路。
背景
最近加入了掘金,在搬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 ********"
总结
因为各个省份,公司要求都不一样,使用配置文件来完成变量定义,或者是用参数导入,如果更换环境,或在其他地方部署会方便的多,这个依然还没有做好