Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F31481
alibaba-init.sh
All Users
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
ethomas
Jan 23 2018, 7:53 PM
2018-01-23 19:53:16 (UTC+0)
Size
4 KB
Referenced Files
None
Subscribers
None
alibaba-init.sh
View Options
#!/bin/vbash
### BEGIN INIT INFO
# Provides: os-conf
# Short-Description: The initial os-conf job, config the system.
### END INIT INFO
first_partition_dir
=
'/live/image'
## The image must be prepared first with this custom directory in the root of the first partition
os_conf_dir
=
${
first_partition_dir
}
/aliyun_custom_image
os_conf_file
=
${
os_conf_dir
}
/os.conf
load_os_conf
()
{
if
[[
-f
$os_conf_file
]]
;
then
.
$os_conf_file
return
0
else
return
1
fi
}
cleanup
()
{
## ensure $os_conf_file is deleted, to avoid repeating the configuration with each boot
rm
$os_conf_file
>
&
/dev/null
}
config_password
()
{
## Alibaba says it's setting the root password in their system creation dialog, but we're
## really setting the password into the vyos user. root should not have a password
## Also, you must use the password option in the setup, not the keyfile option
if
[[
-n
$password
]]
;
then
password
=
$(
echo
$password
|
base64 -d
)
if
[[
$?
==
0
&&
-n
$password
]]
;
then
/usr/bin/sg vyattacfg
"/opt/vyatta/etc/config/scripts/vyos-command.sh \"system login user vyos authentication plaintext-password
$password
\""
fi
fi
}
config_hostname
()
{
if
[[
-n
$hostname
]]
;
then
/usr/bin/sg vyattacfg
"/opt/vyatta/etc/config/scripts/vyos-command.sh \"system host-name
$hostname
\""
fi
}
config_dns
()
{
if
[[
-n
$dns_nameserver
]]
;
then
for
i
in
$dns_nameserver
;
do
/usr/bin/sg vyattacfg
"/opt/vyatta/etc/config/scripts/vyos-command.sh \"system name-server
$i
\""
done
fi
}
is_classic_network
()
{
## I have not tested this on a "Classic" setup, because new users can't setup Classic servers
# vpc: eth0
# classic: eth0 eth1
grep -q
'eth1'
$os_conf_file
}
config_network
()
{
config_interface eth0
${
eth0_ip_addr
}
${
eth0_netmask
}
${
eth0_mac_addr
}
## Don't know how to do this route on VyOS, but the VPC setup only needs the default gateway anyway
# config_route eth0 ${eth0_route}
config_default_gateway
${
eth0_gateway
}
if
is_classic_network
;
then
config_interface eth1
${
eth1_ip_addr
}
${
eth1_netmask
}
${
eth1_mac_addr
}
# config_route eth1 ${eth1_route}
fi
}
config_interface
()
{
local
interface
=
$1
local
ip
=
$2
local
netmask
=
$3
local
cidr
=
$(
mask2cidr
$netmask
)
local
mac
=
$4
/usr/bin/sg vyattacfg
"/opt/vyatta/etc/config/scripts/vyos-command.sh \"interfaces ethernet
$interface
address
$ip
/
$cidr
\""
/usr/bin/sg vyattacfg
"/opt/vyatta/etc/config/scripts/vyos-command.sh \"interfaces ethernet
$interface
mac
$mac
\""
}
config_default_gateway
()
{
local
gateway
=
$1
/usr/bin/sg vyattacfg
"/opt/vyatta/etc/config/scripts/vyos-command.sh \"system gateway-address
$gateway
\""
}
## Don't know how to do the routes like this. Commenting out this subroutine and leaving it with their example
## Also not needed for the VPC setup. Only the default-gateway is needed
#config_route() {
# local interface=$1
# local route=$2
# route_conf=/etc/sysconfig/network-scripts/route-${interface}
# > $route_conf
# echo $route | sed 's/;/\n/' | \
# while read line; do
# dst=$(echo $line | awk '{print $1}')
# gw=$(echo $line | awk '{print $2}')
# if ! grep -q "$dst" $route_conf 2> /dev/null; then
# echo "$dst via $gw dev $interface" >> $route_conf
# fi
# if [[ "$dst" == "0.0.0.0/0" ]]; then
# config_default_gateway $gw
# fi
# done
#}
## VyOS needs the cidr for the interface setup, but Alibaba only provides the subnet mask.
## I found this subroutine for converting from netmask
mask2cidr
()
{
# Assumes there's no "255." after a non-255 byte in the mask
local
x
=
${
1
##*255.
}
set
--
0
^^^128^192^224^240^248^252^254^
$((
(
${#
1
}
-
${#
x
}
)*
2
))
${
x
%%.*
}
x
=
${
1
%%
$3
*
}
echo
$((
$2
+
(
${#
x
}
/
4
)
))
}
## Do the stuff
if
load_os_conf
;
then
config_password
config_network
config_hostname
config_dns
cleanup
exit
0
else
echo
"No os.conf file to load. This is okay."
exit
0
fi
File Metadata
Details
Attached
Mime Type
text/plain
Storage Engine
amazon-s3
Storage Format
Raw Data
Storage Handle
phabricator/oy/4f/4sz3h7ccchvhpqgp
Default Alt Text
alibaba-init.sh (4 KB)
Attached To
Mode
T528: Alibaba Cloud image
Attached
Detach File
Event Timeline
Log In to Comment