El script bash de datos de usuario EC2 de Ubuntu no se está ejecutando
Intenté ejecutar el siguiente script en una máquina Ubuntu22 y también intenté ejecutarlo en una máquina Amazon Linux. Ambas instancias se inician sin problemas indicados, sin embargo, cuando ingreso por SSH a la instancia, todos los programas que esperaría que se instalen no están allí, probé todos los comandos manualmente para ver si funcionan y lo hacen.
El script de bash:
#!/bin/bash
sudo apt update -y
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt install unzip -y
unzip awscliv2.zip
sudo ./aws/install
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o
/usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg]
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee
/etc/apt/sources.list.d/hashicorp.list
sudo apt install terraform -y
mkdir keys
ssh-keygen -t rsa -b 4096 -f /home/ubuntu/keys/clientkey -N ""
ssh-keygen -t rsa -b 4096 -f /home/ubuntu/keys/serverkey -N ""
clientpubkey=$(cat /home/ubuntu/keys/clientkey.pub)
serverpubkey=$(cat /home/ubuntu/keys/serverkey.pub)
aws s3 cp s3://musicappscripts --recursive
La nube-init.log:
> 2024-02-17 09:39:05,379 - util.py[DEBUG]: Cloud-init v. 23.3.3-
0ubuntu0~22.04.1 running 'init-local' at Sat, 17 Feb 2024 09:39:05
+0000. Up 7.85 seconds.
2024-02-17 09:39:05,379 - main.py[DEBUG]: No kernel command line
url found.
2024-02-17 09:39:05,379 - main.py[DEBUG]: Closing stdin.
2024-02-17 09:39:05,390 - util.py[DEBUG]: Writing to
/var/log/cloud-init.log - ab: [640] 0 bytes
2024-02-17 09:39:05,391 - util.py[DEBUG]: Changing the ownership
of /var/log/cloud-init.log to 104:4
2024-02-17 09:39:05,391 - util.py[DEBUG]: Writing to
/var/lib/cloud/data/python-version - wb: [644] 4 bytes
2024-02-17 09:39:05,392 - util.py[DEBUG]: Attempting to remove
/var/lib/cloud/instance/boot-finished
2024-02-17 09:39:05,392 - handlers.py[DEBUG]: start: init-
local/check-cache: attempting to read from cache [check]
2024-02-17 09:39:05,392 - util.py[DEBUG]: Reading from
/var/lib/cloud/instance/obj.pkl (quiet=False)
2024-02-17 09:39:05,392 - stages.py[DEBUG]: no cache found
2024-02-17 09:39:05,392 - handlers.py[DEBUG]: finish: init-
local/check-cache: SUCCESS: no cache found
2024-02-17 09:39:05,392 - util.py[DEBUG]: Attempting to remove
/var/lib/cloud/instance
2024-02-17 09:39:05,396 - stages.py[DEBUG]: Using distro class
<class 'cloudinit.distros.ubuntu.Distro'>
2024-02-17 09:39:05,396 - __init__.py[DEBUG]: Looking for data
source in: ['Ec2', 'None'], via packages ['', 'cloudinit.sources']
that matches dependencies ['FILESYSTEM']
2024-02-17 09:39:05,423 - __init__.py[DEBUG]: Searching for local
data source in: ['DataSourceEc2Local']
2024-02-17 09:39:05,423 - handlers.py[DEBUG]: start: init-
local/search-Ec2Local: searching for local data from
DataSourceEc2Local
2024-02-17 09:39:05,424 - __init__.py[DEBUG]: Seeing if we can get
any data from
<class'cloudinit.sources.DataSourceEc2.DataSourceEc2Local'>
2024-02-17 09:39:05,424 - __init__.py[DEBUG]: Update datasource
metadata and network config due to events: boot-new-instance
2024-02-17 09:39:05,424 - util.py[DEBUG]: Reading from
/sys/hypervisor/uuid (quiet=False)
2024-02-17 09:39:05,424 - util.py[DEBUG]: Read 37 bytes from
/sys/hypervisor/uuid
2024-02-17 09:39:05,424 - dmi.py[DEBUG]: querying dmi data
/sys/class/dmi/id/product_serial
2024-02-17 09:39:05,424 - dmi.py[DEBUG]: querying dmi data
/sys/class/dmi/id/chassis_asset_tag
2024-02-17 09:39:05,424 - dmi.py[DEBUG]: querying dmi data
/sys/class/dmi/id/sys_vendor
2024-02-17 09:39:05,424 - dmi.py[DEBUG]: querying dmi data
/sys/class/dmi/id/product_name
2024-02-17 09:39:05,425 - __init__.py[DEBUG]: Machine is
configured to run on single datasource DataSourceEc2Local.
2024-02-17 09:39:05,425 - DataSourceEc2.py[DEBUG]: strict_mode:
warn, cloud_name=aws cloud_platform=ec2
2024-02-17 09:39:05,425 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/name_assign_type (quiet=False)
2024-02-17 09:39:05,425 - util.py[DEBUG]: Read 2 bytes from
/sys/class/net/eth0/name_assign_type
2024-02-17 09:39:05,425 - __init__.py[DEBUG]: Found unstable nic
names: ['eth0']; calling udevadm settle
2024-02-17 09:39:05,425 - subp.py[DEBUG]: Running command
['udevadm', 'settle'] with allowed return codes [0]
(shell=False,capture=True)
2024-02-17 09:39:05,445 - util.py[DEBUG]: Waiting for udev events
to settle took 0.020 seconds
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/address (quiet=False)
2024-02-17 09:39:05,446 - util.py[DEBUG]: Read 18 bytes from
/sys/class/net/eth0/address
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/device/device (quiet=False)
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/lo/address (quiet=False)
2024-02-17 09:39:05,446 - util.py[DEBUG]: Read 18 bytes from
/sys/class/net/lo/address
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/lo/device/device (quiet=False)
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/carrier (quiet=False)
2024-02-17 09:39:05,446 - __init__.py[DEBUG]: Interface has no
carrier: eth0
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/dormant (quiet=False)
2024-02-17 09:39:05,446 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/operstate (quiet=False)
2024-02-17 09:39:05,447 - util.py[DEBUG]: Read 5 bytes from
/sys/class/net/eth0/operstate
2024-02-17 09:39:05,447 - dhcp.py[DEBUG]: DHCP client selected:
dhclient
2024-02-17 09:39:05,447 - dhcp.py[DEBUG]: Performing a dhcp
discovery on eth0
2024-02-17 09:39:05,447 - subp.py[DEBUG]: Running command ['ip',
'link', 'set', 'dev', 'eth0', 'up'] with allowed return codes [0]
(shell=False, capture=True)
2024-02-17 09:39:05,504 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/type (quiet=False)
2024-02-17 09:39:05,504 - util.py[DEBUG]: Read 2 bytes from
/sys/class/net/eth0/type
2024-02-17 09:39:05,504 - subp.py[DEBUG]: Running command
['/usr/sbin/dhclient', '-1', '-v', '-lf', '/run/dhclient.lease',
'-pf', '/run/dhclient.pid', '-sf', '/bin/true', 'eth0'] with
allowed return codes [0] (shell=False, capture=True)
2024-02-17 09:39:05,616 - util.py[DEBUG]: All files appeared after
0 seconds: ['/run/dhclient.pid', '/run/dhclient.lease']
2024-02-17 09:39:05,616 - util.py[DEBUG]: Reading from
/run/dhclient.pid (quiet=False)
2024-02-17 09:39:05,617 - util.py[DEBUG]: Read 4 bytes from
/run/dhclient.pid
2024-02-17 09:39:05,617 - util.py[DEBUG]: Reading from
/proc/331/stat (quiet=True)
2024-02-17 09:39:05,617 - util.py[DEBUG]: Read 303 bytes from
/proc/331/stat
2024-02-17 09:39:05,617 - dhcp.py[DEBUG]: killing dhclient with
pid=331
2024-02-17 09:39:05,617 - util.py[DEBUG]: Reading from
/run/dhclient.lease (quiet=False)
2024-02-17 09:39:05,618 - util.py[DEBUG]: Read 516 bytes from
/run/dhclient.lease
2024-02-17 09:39:05,618 - ephemeral.py[DEBUG]: Received dhcp lease
on eth0 for 172.31.21.174/255.255.240.0
2024-02-17 09:39:05,618 - ephemeral.py[DEBUG]: Attempting setup of
ephemeral network on eth0 with 172.31.21.174/20 brd 172.31.31.255
2024-02-17 09:39:05,618 - subp.py[DEBUG]: Running command ['ip',
'-family', 'inet', 'addr', 'add', '172.31.21.174/20', 'broadcast',
'172.31.31.255', 'dev', 'eth0'] with allowed return codes [0]
(shell=False, capture=True)
2024-02-17 09:39:05,620 - subp.py[DEBUG]: Running command ['ip',
'-family', 'inet', 'link', 'set', 'dev', 'eth0', 'up'] with
allowed return codes [0] (shell=False, capture=True)
2024-02-17 09:39:05,622 - subp.py[DEBUG]: Running command ['ip',
'route', 'show', '0.0.0.0/0'] with allowed return codes [0]
(shell=False, capture=True)
2024-02-17 09:39:05,624 - subp.py[DEBUG]: Running command ['ip',
'-4', 'route', 'add', '172.31.16.1', 'dev', 'eth0', 'src',
'172.31.21.174'] with allowed return codes [0] (shell=False,
capture=True)
2024-02-17 09:39:05,626 - subp.py[DEBUG]: Running command ['ip',
'-4', 'route', 'add', 'default', 'via', '172.31.16.1', 'dev',
'eth0'] with allowed return codes [0] (shell=False, capture=True)
2024-02-17 09:39:05,627 - util.py[DEBUG]: Reading from
/sys/class/net/eth0/operstate (quiet=False)
2024-02-17 09:39:05,627 - util.py[DEBUG]: Read 3 bytes from
/sys/class/net/eth0/operstate
2024-02-17 09:39:05,629 - util.py[DEBUG]: Resolving URL:
http://169.254.169.254 took 0.001 seconds
2024-02-17 09:39:05,629 - util.py[DEBUG]: Resolving URL:
http://[fd00:ec2::254] took 0.000 seconds
2024-02-17 09:39:05,629 - util.py[DEBUG]: Resolving URL:
http://instance-data.:8773 took 0.000 seconds
2024-02-17 09:39:05,629 - DataSourceEc2.py[DEBUG]: Removed the
following from metadata urls: ['http://instance-data.:8773']
2024-02-17 09:39:05,629 - DataSourceEc2.py[DEBUG]: Fetching Ec2
IMDSv2 API Token
@@@
Los scripts de datos de usuario se ejecutan como usuario raíz y, por lo tanto, no deben usarse sudo
. Lo más probable es que el tuyo falle aquí.
Esto fallará en Amazon Linux incluso sin sudo
que distribuciones como CentOS y otras no utilicen apt
sino el yum
administrador de paquetes. Asegúrese de probarlo como lo hizo inicialmente en Ubuntu u otras distribuciones que usan apt
como Debian.
Espero que esto ayude.