自动化脚本腾讯云配置集群(三)批量修改host

来源:互联网 发布:windows无法访问文件夹 编辑:程序博客网 时间:2024/06/03 19:14

在搭建hadoop或者spark集群之前,可能需要对集群中节点的别名重新命名,方便集群的管理。例如hosts文件中,将节点的IP对应成master和slave1等。如下

# hosts127.0.0.1  localhost  localhost.localdomain10.135.72.89    master10.135.82.197   slave110.104.73.51    slave2

类似于上述对hosts文件的修改。首先我们在master节点上创建一个新的hosts文件,用来记录更新的hosts文件,方便之后自动化替换各节点的系统hosts文件。

步骤介绍:
1. master节点上,根据集群IP信息,创建hosts文件。
2. 将该hosts文件分发到从节点。
3. 在各个从节点上,替换系统hosts文件为更新后的hosts文件

host文件
以下是笔者根据自己的集群创建的hosts文件

# 笔者的hosts127.0.0.1  localhost  localhost.localdomain10.135.72.89    VM-72-89-ubuntu10.135.82.197   VM-82-197-ubuntu10.104.73.51    VM-73-51-ubuntu10.104.100.159  VM-100-159-ubuntu10.104.67.69    VM-67-69-ubuntu10.135.79.153   VM-79-153-ubuntu10.104.45.59    VM-45-59-ubuntu10.135.33.4 VM-33-4-ubuntu10.135.145.94   VM-145-94-ubuntu10.104.173.150  VM-173-150-ubuntu10.135.69.201   VM-69-201-ubuntu10.135.112.157  VM-112-157-ubuntu10.135.165.54   VM-165-54-ubuntu10.104.254.242  VM-254-242-ubuntu10.135.117.148  VM-117-148-ubuntu

expect_host.sh脚本

主要功能:通过命令登录到从节点机器,并切换至从节点的root用户,在使用root权限替换hosts文件。该脚本将作为功能模块在root_hosts.sh文件中执行。

#!/usr/bin/expect# expect expect_hosts.sh 10.135.82.197 ubuntu ubuntu123456 #执行命令与参数样例set timeout 1#set host "10.186.2.84"#set username "ubuntu"#set password "ubuntu123456"set host [lindex $argv 0]set username [lindex $argv 1]set password [lindex $argv 2]spawn ssh $username@$hostexpect {    "Are you sure you want to continue connecting (yes/no)?" {send "yes\r"; exp_continue}    "*password*" {send "$password\r"}}expect "*$"send "sudo passwd root\r"expect "*password*" {send "123456\r"}expect "*password*" {send "123456\r"}expect "*$"send "su - root\r"expect "Password:" {send "123456\r"}expect "*#"send "cat /home/ubuntu/myscript/hosts > /etc/hosts\r"expect interactexpect EOF

root_hosts.sh脚本

主要功能:在master上直接运行该脚本,并能完成登录到各个从节点,并替换从节点系统的hosts文件。

#!/bin/bashnodes=($(awk "{print \$1}" slavenodes))for node in ${nodes[*]}do    ssh ubuntu@$node "mkdir -p /home/ubuntu/myscript/"    rsync -r --progress ~/myscript/hosts ubuntu@$node:/home/ubuntu/myscript/hosts    expect expect_hosts.sh $node ubuntu ubuntu123456done
原创粉丝点击