Could you guys please help figure out the overwriting rules used in juju user-data?
I tested `write_files` section defined under cloud.cfg.d/ is not override by juju user-data.
Currently I use `write_files` to write my scripts into `/var/lib/cloud/instance/scripts/part-001` to customize juju deployed machine. But it's hack and not straight forward.
Could you guys please help figure out the overwriting rules used in juju user-data? cloud/instance/ scripts/ part-001` to customize juju deployed machine. But it's hack and not straight forward.
I tested `write_files` section defined under cloud.cfg.d/ is not override by juju user-data.
Currently I use `write_files` to write my scripts into `/var/lib/
``` cloud/instance/ user-data. txt.i "====== ======= ==0252242156900 375939= ="
# cat /var/lib/
Content-Type: multipart/mixed; boundary=
MIME-Version: 1.0
Number-Attachments: 1
--===== ======= ===025224215690 0375939= = Disposition: attachment; filename="part-001"
MIME-Version: 1.0
Content-Type: text/cloud-config
Content-
#cloud-config :http:: Proxy:: "127.0. 0.1" "DIRECT"; :https: :Proxy: :"127.0. 0.1" "DIRECT"; :ftp::Proxy: :"127.0. 0.1" "DIRECT"; :http:: Proxy:: "localhost" "DIRECT"; :https: :Proxy: :"localhost" "DIRECT"; :ftp::Proxy: :"localhost" "DIRECT"; :http:: Proxy:: "::1" "DIRECT"; :https: :Proxy: :"::1" "DIRECT"; :ftp::Proxy: :"::1" "DIRECT";' > /etc/apt/ apt.conf. d/95-juju- proxy-settings cloud-init- output. log' juju/MAASmachin e.txt' << 'EOF' juju/MAASmachin e.txt' system/ juju-clean- shutdown. service' encies= false final.target
apt_mirror: ""
bootcmd:
- |-
printf '%s\n' 'Acquire:
Acquire:
Acquire:
Acquire:
Acquire:
Acquire:
Acquire:
Acquire:
Acquire:
output:
all: '| tee -a /var/log/
package_update: true
package_upgrade: true
packages:
- bridge-utils
- curl
- cpu-checker
- bridge-utils
- cloud-utils
- tmux
- ubuntu-fan
runcmd:
- set -xe
- |-
mkdir -p '/var/lib/juju'
cat > '/var/lib/
'hostname: vm6
'
EOF
chmod 0755 '/var/lib/
- set -xe
- install -D -m 644 /dev/null '/etc/systemd/
- |-
printf '%s\n' '
[Unit]
Description=Stop all network interfaces on shutdown
DefaultDepend
After=
[Service] /sbin/ifdown -a -v --force t=tty
Type=oneshot
ExecStart=
StandardOutpu
StandardError=tty
[Install] final.target system/ juju-clean- shutdown. service' system/ juju-clean- shutdown. service' juju/nonce. txt' 0:a095a350- 3630-47f3- 8c0b-a49f741c7b f9' > '/var/lib/ juju/nonce. txt' FD}>&2) 2>/dev/null && exec PROGRESS_ FD}>&2 || JUJU_PROGRESS_FD=2 d/juju- proxy.sh ] || printf ''\n# Added by juju\n[ -f "/etc/juju- proxy.conf" proxy.conf" \n'' >> /etc/profile. d/juju- proxy.sh' lib/juju/ tools/2. 4.1.1-xenial- amd64'
WantedBy=
' > '/etc/systemd/
- /bin/systemctl enable '/etc/systemd/
- install -D -m 644 /dev/null '/var/lib/
- printf '%s\n' 'machine-
- test -n "$JUJU_PROGRESS_FD" || (exec {JUJU_PROGRESS_
{JUJU_
- '[ -e /etc/profile.
] && . "/etc/juju-
- mkdir -p /var/lib/juju/locks
- (id ubuntu &> /dev/null) && chown ubuntu:ubuntu /var/lib/juju/locks
- mkdir -p /var/log/juju
- chown syslog:adm /var/log/juju
- bin='/var/
- mkdir -p $bin
- echo 'Fetching Juju agent version 2.4.1.1 for amd64' >&$JUJU_PROGRESS_FD
- |2-
n=1
while true; do
printf "Attempt $n to download agent binaries from %s...\n" 'https:/ /10.10. 25.44:17070/ model/a8436d07- e82f-4ef0- 878c-d95d05f57a 13/tools/ 2.4.1.1- xenial- amd64' /10.10. 25.44:17070/ model/a8436d07- e82f-4ef0- 878c-d95d05f57a 13/tools/ 2.4.1.1- xenial- amd64' && echo "Agent binaries downloaded successfully." && break
curl -sSfw 'agent binaries from %{url_effective} downloaded: HTTP %{http_code}; time %{time_total}s; size %{size_download} bytes; speed %{speed_download} bytes/s ' --connect-timeout 20 --noproxy "*" --insecure -o $bin/tools.tar.gz 'https:/
printf "Attempt $n to download agent binaries from %s...\n" 'https:/ /172.17. 0.1:17070/ model/a8436d07- e82f-4ef0- 878c-d95d05f57a 13/tools/ 2.4.1.1- xenial- amd64' /172.17. 0.1:17070/ model/a8436d07- e82f-4ef0- 878c-d95d05f57a 13/tools/ 2.4.1.1- xenial- amd64' && echo "Agent binaries downloaded successfully." && break
curl -sSfw 'agent binaries from %{url_effective} downloaded: HTTP %{http_code}; time %{time_total}s; size %{size_download} bytes; speed %{speed_download} bytes/s ' --connect-timeout 20 --noproxy "*" --insecure -o $bin/tools.tar.gz 'https:/
echo "Download failed, retrying in 15s" 4.1.1-xenial- amd64.sha256 1c148cebfc1d209 23dc4260ccf6f38 d1074c7306f9c02 a132c' $bin/juju2. 4.1.1-xenial- amd64.sha256 :"2.4.1. 1-xenial- amd64", "url":"https:/ /10.10. 25.44:17070/ model/a8436d07- e82f-4ef0- 878c-d95d05f57a 13/tools/ 2.4.1.1- xenial- amd64","sha256" :"4d3f96279468c 91c148cebfc1d20 923dc4260ccf6f3 8d1074c7306f9c0 2a132c" ,"size" :26292924} ' -tools. txt juju/agents/ machine- 2' juju/agents/ machine- 2/agent. conf' << 'EOF' juju/metricspoo l 0:a095a350- 3630-47f3- 8c0b-a49f741c7b f9 sion: 2.4.1.1 gAwIBAgIUUwWywt de/IZap4RTMIdw/ cmdNfgwDQYJKoZI hvcNAQEL GA1UEChMEanVqdT EuMCwGA1UEAwwla nVqdS1nZW5lcmF0 ZWQgQ0Eg sICJqdWp1LWNhIj EtMCsGA1UEBRMkM 2M2MThlMzQtMzc2 YS00NmQ5 wNTgxMzkzZGU1MB 4XDTE4MTEyNjE1N TgwNloXDTI4MTIw MzE1NTgw GA1UEChMEanVqdT EuMCwGA1UEAwwla nVqdS1nZW5lcmF0 ZWQgQ0Eg sICJqdWp1LWNhIj EtMCsGA1UEBRMkM 2M2MThlMzQtMzc2 YS00NmQ5 wNTgxMzkzZGU1MI IBIjANBgkqhkiG9 w0BAQEFAAOCAQ8A MIIBCgKC AaYVpv4T/ A4W4Qeq8lSPN+ xAurZEI0k8lpGpI HQbjTb8m1oToTS2 D N3AdVPIDq8xBynx m6C7mbMYqiUWPBR 9+CPeC2kpFKN7Nz 5gr/D1qP CLnZSLBkKtuFjtF snjIqewve3jcIk9 ycIvESMxn3RyJnb L7DQd9sn gM1A2HmDIMn3dX1 /73UzTBiLZGWeYE BZKKfOsOEdHvjdn j9sAvO8Z bdK+tOPGzFyrvsw diySySpyeiiZmMJ 0Q1lCQmat6bSRNI ZuS4k2nM /wvd7Yh6ipV8gYQ IDAQABo0IwQDAOB gNVHQ8BAf8EBAMC AqQwDwYD BAUwAwEB/ zAdBgNVHQ4EFgQU kuB2CxzBekUh/ 6k4RRnxi9Bz7igw DQYJ LBQADggEBAFXhsA 4SsGJuRwk0Ix5Xm YTk9riq6TC4OXs5 c9huI6v3 H0PhbFmqzT61X14 NCZwObqWsTBfKRj iDLnuuyEDObtN7m cxt1+R7p E2ka4jz7/ zpl6uNxcutSDgKB K+FZtJnd9e72xUs qwdjMwgY0824EI p//9iHi6gt6ojhP c9mH3gl7FTSG7te L0M0/8A3yHJT7SJ Aq4Wfjv9 kw5Pa3oy497ArPW mcLTY7VOQQDSJMv fd7wa1avB68o8Si c3+LG9hLPzBF EsF/qK1DJUuaL6c cZhIX4xELscHAhV t8= dac47f55- ecda-4348- 8baa-841c9ea395 1b e82f-4ef0- 878c-d95d05f57a 13 wcgzjYifz8 SERVICE_ NAME: jujud-machine-2
sleep 15
n=$((n+1))
done
- sha256sum $bin/tools.tar.gz > $bin/juju2.
- grep '4d3f96279468c9
|| (echo "Tools checksum mismatch"; exit 1)
- tar zxf $bin/tools.tar.gz -C $bin
- printf %s '{"version"
> $bin/downloaded
- mkdir -p '/var/lib/
- |-
cat > '/var/lib/
# format 2.0
tag: machine-2
datadir: /var/lib/juju
logdir: /var/log/juju
metricsspooldir: /var/lib/
nonce: machine-
jobs:
- JobHostUnits
upgradedToVer
cacert: |
-----BEGIN CERTIFICATE-----
MIIDrDCCApS
BQAwbjENMAs
Zm9yIG1vZGV
LThiYTAtMzI
NVowbjENMAs
Zm9yIG1vZGV
LThiYTAtMzI
AQEA2Y9PQB9
bOE3M7dzY8B
Ftrkbwp6Nlk
DAot5f13DaT
k+QjKDctj98
qeBNGm8FQPh
VR0TAQH/
KoZIhvcNAQE
FIwzNnuO76e
cARNYrZzICA
Sra3dPh53OZ
xXgnW7/
Wxi0hNxNddw
-----END CERTIFICATE-----
controller: controller-
model: model-a8436d07-
apiaddresses:
- 10.10.25.44:17070
oldpassword: MlpPswW4LHHM1/
values:
AGENT_
CONTAINER_TYPE: ""
PROVIDER_TYPE: maas
mongoversion: "0.0"
EOF juju/agents/ machine- 2/agent. conf' xenial- amd64 '/var/lib/ juju/tools/ machine- 2' system/ jujud-machine- 2' system/ jujud-machine- 2/exec- start.sh' << 'EOF'
- chmod 0600 '/var/lib/
- ln -s 2.4.1.1-
- echo 'Starting Juju machine agent (service jujud-machine-2)' >&$JUJU_PROGRESS_FD
- mkdir -p '/lib/systemd/
- |-
cat > '/lib/systemd/
#!/usr/bin/env bash
# Set up logging. juju/machine- 2.log' juju/machine- 2.log' juju/machine- 2.log' juju/machine- 2.log'
touch '/var/log/
chown syslog:syslog '/var/log/
chmod 0600 '/var/log/
exec >> '/var/log/
exec 2>&1
# Run the script. lib/juju/ tools/machine- 2/jujud' machine --data-dir '/var/lib/juju' --machine-id 2 --debug system/ jujud-machine- 2/exec- start.sh' system/ jujud-machine- 2/jujud- machine- 2.service' << 'EOF' syslog. target network. target systemd- user-sessions. service
'/var/
EOF
- chmod 0755 '/lib/systemd/
- |-
cat > '/lib/systemd/
[Unit]
Description=juju agent for machine-2
After=
After=
After=
[Service] /lib/systemd/ system/ jujud-machine- 2/exec- start.sh on-failure
LimitNOFILE=20000
ExecStart=
Restart=
TimeoutSec=300
[Install] multi-user. target
WantedBy=
EOF system/ jujud-machine- 2/jujud- machine- 2.service' system/ jujud-machine- 2/jujud- machine- 2.service' 2.service 4.1.1-xenial- amd64.sha256 d-keys: AAAADAQABAAABAQ C/ESFSVAhK8ikYo KZcTBf2G9RGTyrN 6sTZwbVEpOxxZ6q R8zhg7qritfyVaR y0FVMDQbNjwAMIc SbMct1396kjIIFP qwu4KQyNznvwO6K juLY2t9coGRrMeh fc1IOecf4SEiseI 81N4+MiHQxabXR9 7S2dgd89M4kK7Th W9mfO1/ oLTCkiCGy1aIoMJ oAelc7ifKW/ C1YtlUmmWj/ WEuKUjG3YYY75xs nSTCbdrCxPuVHRR WYkGNWfb2TzYRP0 JW+uYZy2W/ gOuPzzxjuDBkz/ dSyZd989IaoGM49 fBBT8jqOi3d9Pjd 1O9gsMVSp/ D8X2JuHGYMXhusw G9ddfO1r7 juju-client- key AAAADAQABAAABAQ DOeQ7hxqB8e3HOg 2zTrozDoxWO05O/ h4PHO+iLEjtbqZB 2S0EUE/ ++dHbjoqOAAfIdQ tdcTsgec8XCqgLT nF9S1i0cDHNfxXq cgQUx8OmAzcE/ V18v2yqWnUtVMVs CRy1seNvV4oyg+ NsDEF3tK2u/ KTiRdzlxPfILY1k h281w3bbfDZ3Ivo UWJGjMtRTLdRZG0 CfDeS/2hVRvZO97 WtY6Fexc9c3VeMH YFMQhCwNwkQPLfL skfw6JikvVKqgSR 8dGH+cZMgvF55JV qDuAhudTy5KyQsh GPpUQW5VXwjDYlC pPgzhmhY9e5JaYU gozBXjoxT1o0aMl 3LTvNm5AzAM5 juju-system- key
- /bin/systemctl link '/lib/systemd/
- /bin/systemctl daemon-reload
- /bin/systemctl enable '/lib/systemd/
- /bin/systemctl start jujud-machine-
- rm $bin/tools.tar.gz && rm $bin/juju2.
users:
- groups:
- adm
- audio
- cdrom
- dialout
- dip
- floppy
- netdev
- plugdev
- sudo
- video
lock_passwd: true
name: ubuntu
shell: /bin/bash
ssh-authorize
- ssh-rsa AAAAB3NzaC1yc2E
Juju:
- ssh-rsa AAAAB3NzaC1yc2E
Juju:
sudo:
- ALL=(ALL) NOPASSWD:ALL
--===== ======= ===025224215690 0375939= =--
```