150498135SJose Luis Duran#- 219a7ea3cSBaptiste Daroussin# Copyright (c) 2022-2025 Baptiste Daroussin <bapt@FreeBSD.org> 350498135SJose Luis Duran# 450498135SJose Luis Duran# SPDX-License-Identifier: BSD-2-Clause 550498135SJose Luis Duran# 650498135SJose Luis Duran 7e72457c4SJose Luis Duranexport NUAGE_FAKE_ROOTDIR="$PWD" 8e72457c4SJose Luis Duran 9a42d6f76SBaptiste Daroussinatf_test_case args 10a42d6f76SBaptiste Daroussinatf_test_case nocloud 11a42d6f76SBaptiste Daroussinatf_test_case nocloud_userdata_script 12cde66424SBaptiste Daroussinatf_test_case nocloud_user_data_script 13a42d6f76SBaptiste Daroussinatf_test_case nocloud_userdata_cloudconfig_users 14a42d6f76SBaptiste Daroussinatf_test_case nocloud_network 15a42d6f76SBaptiste Daroussinatf_test_case config2 16a42d6f76SBaptiste Daroussinatf_test_case config2_pubkeys 17cde66424SBaptiste Daroussinatf_test_case config2_pubkeys_user_data 1819fb9ad7SBaptiste Daroussinatf_test_case config2_pubkeys_meta_data 19a42d6f76SBaptiste Daroussinatf_test_case config2_network 20a42d6f76SBaptiste Daroussinatf_test_case config2_network_static_v4 2141fe9d53SBaptiste Daroussinatf_test_case config2_ssh_keys 22f85d0868SBaptiste Daroussinatf_test_case nocloud_userdata_cloudconfig_ssh_pwauth 23c201a119SBaptiste Daroussinatf_test_case nocloud_userdata_cloudconfig_chpasswd 24c201a119SBaptiste Daroussinatf_test_case nocloud_userdata_cloudconfig_chpasswd_list_string 25c201a119SBaptiste Daroussinatf_test_case nocloud_userdata_cloudconfig_chpasswd_list_list 262f35a521SSebastien Baylocqatf_test_case config2_userdata_runcmd 27076fec1bSSebastien Baylocqatf_test_case config2_userdata_packages 28682af960SSebastien Baylocqatf_test_case config2_userdata_update_packages 29682af960SSebastien Baylocqatf_test_case config2_userdata_upgrade_packages 3009545628SBaptiste Daroussinatf_test_case config2_userdata_shebang 31f1dd507bSBaptiste Daroussinatf_test_case config2_userdata_fqdn_and_hostname 3219a7ea3cSBaptiste Daroussinatf_test_case config2_userdata_write_files 33a42d6f76SBaptiste Daroussin 34e38f521fSSebastien Baylocqsetup_test_adduser() 35e38f521fSSebastien Baylocq{ 36e38f521fSSebastien Baylocq here=$(pwd) 37e38f521fSSebastien Baylocq export NUAGE_FAKE_ROOTDIR=$(pwd) 38e38f521fSSebastien Baylocq mkdir -p etc/ssh 39e38f521fSSebastien Baylocq cat > etc/master.passwd << EOF 40e38f521fSSebastien Baylocqroot:*:0:0::0:0:Charlie &:/root:/bin/csh 41e38f521fSSebastien Baylocqsys:*:1:0::0:0:Sys:/home/sys:/bin/csh 42e38f521fSSebastien BaylocqEOF 43e38f521fSSebastien Baylocq pwd_mkdb -d etc ${here}/etc/master.passwd 44e38f521fSSebastien Baylocq cat > etc/group << EOF 45e38f521fSSebastien Baylocqwheel:*:0:root 46e38f521fSSebastien Baylocqusers:*:1: 47e38f521fSSebastien BaylocqEOF 48e38f521fSSebastien Baylocq} 49e38f521fSSebastien Baylocq 50a42d6f76SBaptiste Daroussinargs_body() 51a42d6f76SBaptiste Daroussin{ 5238bb6f79SJose Luis Duran atf_check -s exit:1 -e inline:"Usage: /usr/libexec/nuageinit <cloud-init-directory> (<config-2> | <nocloud>)\n" /usr/libexec/nuageinit 5338bb6f79SJose Luis Duran atf_check -s exit:1 -e inline:"Usage: /usr/libexec/nuageinit <cloud-init-directory> (<config-2> | <nocloud>)\n" /usr/libexec/nuageinit bla 5438bb6f79SJose Luis Duran atf_check -s exit:1 -e inline:"Usage: /usr/libexec/nuageinit <cloud-init-directory> (<config-2> | <nocloud>)\n" /usr/libexec/nuageinit bla meh plop 55945632caSJose Luis Duran atf_check -s exit:1 -e inline:"nuageinit: Unknown cloud init type: meh\n" /usr/libexec/nuageinit bla meh 56a42d6f76SBaptiste Daroussin} 57a42d6f76SBaptiste Daroussin 58a42d6f76SBaptiste Daroussinnocloud_body() 59a42d6f76SBaptiste Daroussin{ 60a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 61e72457c4SJose Luis Duran atf_check -s exit:1 -e match:"nuageinit: error parsing nocloud.*" /usr/libexec/nuageinit "${PWD}"/media/nuageinit/ nocloud 62e72457c4SJose Luis Duran printf "instance-id: iid-local01\nlocal-hostname: cloudimg\n" > "${PWD}"/media/nuageinit/meta-data 63e72457c4SJose Luis Duran atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 64a42d6f76SBaptiste Daroussin atf_check -o inline:"hostname=\"cloudimg\"\n" cat etc/rc.conf.d/hostname 65a42d6f76SBaptiste Daroussin cat > media/nuageinit/meta-data << EOF 66a42d6f76SBaptiste Daroussininstance-id: iid-local01 67a42d6f76SBaptiste Daroussinhostname: myhost 68a42d6f76SBaptiste DaroussinEOF 69e72457c4SJose Luis Duran atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 70a42d6f76SBaptiste Daroussin atf_check -o inline:"hostname=\"myhost\"\n" cat etc/rc.conf.d/hostname 71a42d6f76SBaptiste Daroussin} 72a42d6f76SBaptiste Daroussin 73a42d6f76SBaptiste Daroussinnocloud_userdata_script_body() 74a42d6f76SBaptiste Daroussin{ 75a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 76e72457c4SJose Luis Duran printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 77e72457c4SJose Luis Duran printf "#!/bin/sh\necho yeah\n" > "${PWD}"/media/nuageinit/user-data 78e72457c4SJose Luis Duran chmod 755 "${PWD}"/media/nuageinit/user-data 7909545628SBaptiste Daroussin atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 8009545628SBaptiste Daroussin atf_check -o inline:"#!/bin/sh\necho yeah\n" cat var/cache/nuageinit/user_data 81a42d6f76SBaptiste Daroussin} 82a42d6f76SBaptiste Daroussin 83cde66424SBaptiste Daroussinnocloud_user_data_script_body() 84cde66424SBaptiste Daroussin{ 85cde66424SBaptiste Daroussin mkdir -p media/nuageinit 86e72457c4SJose Luis Duran printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 87e72457c4SJose Luis Duran printf "#!/bin/sh\necho yeah\n" > "${PWD}"/media/nuageinit/user_data 88e72457c4SJose Luis Duran chmod 755 "${PWD}"/media/nuageinit/user_data 8909545628SBaptiste Daroussin atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 9009545628SBaptiste Daroussin atf_check -o inline:"#!/bin/sh\necho yeah\n" cat var/cache/nuageinit/user_data 91cde66424SBaptiste Daroussin} 92cde66424SBaptiste Daroussin 93e72457c4SJose Luis Durannocloud_userdata_cloudconfig_users_head() 94e72457c4SJose Luis Duran{ 95e72457c4SJose Luis Duran atf_set "require.user" root 96e72457c4SJose Luis Duran} 97a42d6f76SBaptiste Daroussinnocloud_userdata_cloudconfig_users_body() 98a42d6f76SBaptiste Daroussin{ 99a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 100e72457c4SJose Luis Duran printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 101a42d6f76SBaptiste Daroussin mkdir -p etc 102a42d6f76SBaptiste Daroussin cat > etc/master.passwd << EOF 103e72457c4SJose Luis Duranroot:*:0:0::0:0:Charlie &:/root:/bin/sh 104e72457c4SJose Luis Duransys:*:1:0::0:0:Sys:/home/sys:/bin/sh 105a42d6f76SBaptiste DaroussinEOF 106e72457c4SJose Luis Duran pwd_mkdb -d etc "${PWD}"/etc/master.passwd 107a42d6f76SBaptiste Daroussin cat > etc/group << EOF 108a42d6f76SBaptiste Daroussinwheel:*:0:root 109a42d6f76SBaptiste Daroussinusers:*:1: 110a42d6f76SBaptiste DaroussinEOF 111b9ce743cSJose Luis Duran cat > media/nuageinit/user-data << 'EOF' 112a42d6f76SBaptiste Daroussin#cloud-config 113a42d6f76SBaptiste Daroussingroups: 114a42d6f76SBaptiste Daroussin - admingroup: [root,sys] 115a42d6f76SBaptiste Daroussin - cloud-users 116a42d6f76SBaptiste Daroussinusers: 117a42d6f76SBaptiste Daroussin - default 118a42d6f76SBaptiste Daroussin - name: foobar 119a42d6f76SBaptiste Daroussin gecos: Foo B. Bar 120a42d6f76SBaptiste Daroussin primary_group: foobar 1216a54f886SBaptiste Daroussin sudo: ALL=(ALL) NOPASSWD:ALL 122a42d6f76SBaptiste Daroussin groups: users 123a42d6f76SBaptiste Daroussin passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ 124*b56d2195SBaptiste Daroussin - name: bla 125*b56d2195SBaptiste Daroussin sudo: 126*b56d2195SBaptiste Daroussin - "ALL=(ALL) NOPASSWD:/usr/sbin/pw" 127*b56d2195SBaptiste Daroussin - "ALL=(ALL) ALL" 128a42d6f76SBaptiste DaroussinEOF 129e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 1302a05d577SBaptiste Daroussin atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 131a42d6f76SBaptiste Daroussin cat > expectedgroup << EOF 132a42d6f76SBaptiste Daroussinwheel:*:0:root,freebsd 133a42d6f76SBaptiste Daroussinusers:*:1:foobar 134a42d6f76SBaptiste Daroussinadmingroup:*:1001:root,sys 135a42d6f76SBaptiste Daroussincloud-users:*:1002: 136a42d6f76SBaptiste Daroussinfreebsd:*:1003: 137a42d6f76SBaptiste Daroussinfoobar:*:1004: 138*b56d2195SBaptiste Daroussinbla:*:1005: 139a42d6f76SBaptiste DaroussinEOF 140b9ce743cSJose Luis Duran cat > expectedpasswd << 'EOF' 141e72457c4SJose Luis Duranroot:*:0:0::0:0:Charlie &:/root:/bin/sh 142e72457c4SJose Luis Duransys:*:1:0::0:0:Sys:/home/sys:/bin/sh 143a42d6f76SBaptiste Daroussinfreebsd:freebsd:1001:1003::0:0:FreeBSD User:/home/freebsd:/bin/sh 144b9ce743cSJose Luis Duranfoobar:$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/:1002:1004::0:0:Foo B. Bar:/home/foobar:/bin/sh 145*b56d2195SBaptiste Daroussinbla::1003:1005::0:0:bla User:/home/bla:/bin/sh 146a42d6f76SBaptiste DaroussinEOF 147e72457c4SJose Luis Duran sed -i "" "s/freebsd:.*:1001/freebsd:freebsd:1001/" "${PWD}"/etc/master.passwd 148e72457c4SJose Luis Duran atf_check -o file:expectedpasswd cat "${PWD}"/etc/master.passwd 149e72457c4SJose Luis Duran atf_check -o file:expectedgroup cat "${PWD}"/etc/group 150*b56d2195SBaptiste Daroussin atf_check -o inline:"foobar ALL=(ALL) NOPASSWD:ALL\nbla ALL=(ALL) NOPASSWD:/usr/sbin/pw\nbla ALL=(ALL) ALL\n" cat ${PWD}/usr/local/etc/sudoers.d/90-nuageinit-users 151a42d6f76SBaptiste Daroussin} 152a42d6f76SBaptiste Daroussin 153e72457c4SJose Luis Durannocloud_network_head() 154e72457c4SJose Luis Duran{ 155e72457c4SJose Luis Duran atf_set "require.user" root 156e72457c4SJose Luis Duran} 157a42d6f76SBaptiste Daroussinnocloud_network_body() 158a42d6f76SBaptiste Daroussin{ 159a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 160a42d6f76SBaptiste Daroussin mkdir -p etc 161a42d6f76SBaptiste Daroussin cat > etc/master.passwd << EOF 162e72457c4SJose Luis Duranroot:*:0:0::0:0:Charlie &:/root:/bin/sh 163e72457c4SJose Luis Duransys:*:1:0::0:0:Sys:/home/sys:/bin/sh 164a42d6f76SBaptiste DaroussinEOF 165e72457c4SJose Luis Duran pwd_mkdb -d etc "${PWD}"/etc/master.passwd 166a42d6f76SBaptiste Daroussin cat > etc/group << EOF 167a42d6f76SBaptiste Daroussinwheel:*:0:root 168a42d6f76SBaptiste Daroussinusers:*:1: 169a42d6f76SBaptiste DaroussinEOF 170a42d6f76SBaptiste Daroussin mynetworks=$(ifconfig -l ether) 171a42d6f76SBaptiste Daroussin if [ -z "$mynetworks" ]; then 172a42d6f76SBaptiste Daroussin atf_skip "a network interface is needed" 173a42d6f76SBaptiste Daroussin fi 174a42d6f76SBaptiste Daroussin set -- $mynetworks 175a42d6f76SBaptiste Daroussin myiface=$1 176a42d6f76SBaptiste Daroussin myaddr=$(ifconfig $myiface ether | awk '/ether/ { print $2 }') 177e72457c4SJose Luis Duran printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 178a42d6f76SBaptiste Daroussin cat > media/nuageinit/user-data << EOF 179a42d6f76SBaptiste Daroussin#cloud-config 180a42d6f76SBaptiste Daroussinnetwork: 181a42d6f76SBaptiste Daroussin version: 2 182a42d6f76SBaptiste Daroussin ethernets: 183a42d6f76SBaptiste Daroussin # opaque ID for physical interfaces, only referred to by other stanzas 184a42d6f76SBaptiste Daroussin id0: 185a42d6f76SBaptiste Daroussin match: 18650498135SJose Luis Duran macaddress: "$myaddr" 187a42d6f76SBaptiste Daroussin addresses: 188e72457c4SJose Luis Duran - 192.0.2.2/24 189e72457c4SJose Luis Duran - 2001:db8::2/64 190e72457c4SJose Luis Duran gateway4: 192.0.2.1 191e72457c4SJose Luis Duran gateway6: 2001:db8::1 192a42d6f76SBaptiste DaroussinEOF 193e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 194a42d6f76SBaptiste Daroussin cat > network << EOF 195e72457c4SJose Luis Duranifconfig_${myiface}="inet 192.0.2.2/24" 196e72457c4SJose Luis Duranifconfig_${myiface}_ipv6="inet6 2001:db8::2/64" 197a42d6f76SBaptiste Daroussinipv6_network_interfaces="${myiface}" 198a42d6f76SBaptiste Daroussinipv6_default_interface="${myiface}" 199a42d6f76SBaptiste DaroussinEOF 200a42d6f76SBaptiste Daroussin cat > routing << EOF 201e72457c4SJose Luis Durandefaultrouter="192.0.2.1" 202e72457c4SJose Luis Duranipv6_defaultrouter="2001:db8::1" 203e72457c4SJose Luis Duranipv6_route_${myiface}="2001:db8::1 -prefixlen 128 -interface ${myiface}" 204a42d6f76SBaptiste DaroussinEOF 205e72457c4SJose Luis Duran atf_check -o file:network cat "${PWD}"/etc/rc.conf.d/network 206e72457c4SJose Luis Duran atf_check -o file:routing cat "${PWD}"/etc/rc.conf.d/routing 207a42d6f76SBaptiste Daroussin} 208e72457c4SJose Luis Duran 209a42d6f76SBaptiste Daroussinconfig2_body() 210a42d6f76SBaptiste Daroussin{ 211a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 212e72457c4SJose Luis Duran atf_check -s exit:1 -e match:"nuageinit: error parsing config-2 meta_data.json:.*" /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 213a42d6f76SBaptiste Daroussin printf "{}" > media/nuageinit/meta_data.json 214e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 215a42d6f76SBaptiste Daroussin cat > media/nuageinit/meta_data.json << EOF 216a42d6f76SBaptiste Daroussin{ 21750498135SJose Luis Duran "hostname": "cloudimg" 218a42d6f76SBaptiste Daroussin} 219a42d6f76SBaptiste DaroussinEOF 220e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 221a42d6f76SBaptiste Daroussin atf_check -o inline:"hostname=\"cloudimg\"\n" cat etc/rc.conf.d/hostname 222a42d6f76SBaptiste Daroussin} 223a42d6f76SBaptiste Daroussin 224e72457c4SJose Luis Duranconfig2_pubkeys_head() 225e72457c4SJose Luis Duran{ 226e72457c4SJose Luis Duran atf_set "require.user" root 227e72457c4SJose Luis Duran} 228a42d6f76SBaptiste Daroussinconfig2_pubkeys_body() 229a42d6f76SBaptiste Daroussin{ 230a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 2318d7331e6SBaptiste Daroussin touch media/nuageinit/meta_data.json 2328d7331e6SBaptiste Daroussin cat > media/nuageinit/user-data << EOF 2338d7331e6SBaptiste Daroussin#cloud-config 2348d7331e6SBaptiste Daroussinssh_authorized_keys: 2358d7331e6SBaptiste Daroussin - "ssh-rsa AAAAB3NzaC1y...== Generated by Nova" 236a42d6f76SBaptiste DaroussinEOF 237a42d6f76SBaptiste Daroussin mkdir -p etc 238a42d6f76SBaptiste Daroussin cat > etc/master.passwd << EOF 239e72457c4SJose Luis Duranroot:*:0:0::0:0:Charlie &:/root:/bin/sh 240e72457c4SJose Luis Duransys:*:1:0::0:0:Sys:/home/sys:/bin/sh 241a42d6f76SBaptiste DaroussinEOF 242e72457c4SJose Luis Duran pwd_mkdb -d etc "${PWD}"/etc/master.passwd 243a42d6f76SBaptiste Daroussin cat > etc/group << EOF 244a42d6f76SBaptiste Daroussinwheel:*:0:root 245a42d6f76SBaptiste Daroussinusers:*:1: 246a42d6f76SBaptiste DaroussinEOF 247e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 248a42d6f76SBaptiste Daroussin atf_check -o inline:"ssh-rsa AAAAB3NzaC1y...== Generated by Nova\n" cat home/freebsd/.ssh/authorized_keys 249a42d6f76SBaptiste Daroussin} 250a42d6f76SBaptiste Daroussin 251e72457c4SJose Luis Duranconfig2_pubkeys_user_data_head() 252e72457c4SJose Luis Duran{ 253e72457c4SJose Luis Duran atf_set "require.user" root 254e72457c4SJose Luis Duran} 255cde66424SBaptiste Daroussinconfig2_pubkeys_user_data_body() 256cde66424SBaptiste Daroussin{ 257cde66424SBaptiste Daroussin mkdir -p media/nuageinit 258cde66424SBaptiste Daroussin touch media/nuageinit/meta_data.json 259cde66424SBaptiste Daroussin cat > media/nuageinit/user_data << EOF 260cde66424SBaptiste Daroussin#cloud-config 261cde66424SBaptiste Daroussinssh_authorized_keys: 262cde66424SBaptiste Daroussin - "ssh-rsa AAAAB3NzaC1y...== Generated by Nova" 263cde66424SBaptiste DaroussinEOF 264cde66424SBaptiste Daroussin mkdir -p etc 265cde66424SBaptiste Daroussin cat > etc/master.passwd << EOF 266e72457c4SJose Luis Duranroot:*:0:0::0:0:Charlie &:/root:/bin/sh 267e72457c4SJose Luis Duransys:*:1:0::0:0:Sys:/home/sys:/bin/sh 268cde66424SBaptiste DaroussinEOF 269e72457c4SJose Luis Duran pwd_mkdb -d etc "${PWD}"/etc/master.passwd 270cde66424SBaptiste Daroussin cat > etc/group << EOF 271cde66424SBaptiste Daroussinwheel:*:0:root 272cde66424SBaptiste Daroussinusers:*:1: 273cde66424SBaptiste DaroussinEOF 274e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 275cde66424SBaptiste Daroussin atf_check -o inline:"ssh-rsa AAAAB3NzaC1y...== Generated by Nova\n" cat home/freebsd/.ssh/authorized_keys 276cde66424SBaptiste Daroussin} 277cde66424SBaptiste Daroussin 27819fb9ad7SBaptiste Daroussinconfig2_pubkeys_meta_data_body() 27919fb9ad7SBaptiste Daroussin{ 28019fb9ad7SBaptiste Daroussin here=$(pwd) 28119fb9ad7SBaptiste Daroussin export NUAGE_FAKE_ROOTDIR=$(pwd) 28219fb9ad7SBaptiste Daroussin if [ $(id -u) -ne 0 ]; then 28319fb9ad7SBaptiste Daroussin atf_skip "root required" 28419fb9ad7SBaptiste Daroussin fi 28519fb9ad7SBaptiste Daroussin mkdir -p media/nuageinit 28619fb9ad7SBaptiste Daroussin cat > media/nuageinit/meta_data.json << EOF 28719fb9ad7SBaptiste Daroussin{ 28819fb9ad7SBaptiste Daroussin "uuid": "uuid_for_this_instance", 28919fb9ad7SBaptiste Daroussin "admin_pass": "a_generated_password", 29019fb9ad7SBaptiste Daroussin "public_keys": { 29119fb9ad7SBaptiste Daroussin "tdb": "ssh-ed25519 my_key_id tdb@host" 29219fb9ad7SBaptiste Daroussin }, 29319fb9ad7SBaptiste Daroussin "keys": [ 29419fb9ad7SBaptiste Daroussin { 29519fb9ad7SBaptiste Daroussin "name": "tdb", 29619fb9ad7SBaptiste Daroussin "type": "ssh", 29719fb9ad7SBaptiste Daroussin "data": "ssh-ed25519 my_key_id tdb@host" 29819fb9ad7SBaptiste Daroussin } 29919fb9ad7SBaptiste Daroussin ], 30019fb9ad7SBaptiste Daroussin "hostname": "freebsd-14-test.novalocal", 30119fb9ad7SBaptiste Daroussin "name": "freebsd-14-test", 30219fb9ad7SBaptiste Daroussin "launch_index": 0, 30319fb9ad7SBaptiste Daroussin "availability_zone": "nova", 30419fb9ad7SBaptiste Daroussin "random_seed": "long_random_seed", 30519fb9ad7SBaptiste Daroussin "project_id": "my_project_id", 30619fb9ad7SBaptiste Daroussin "devices": [], 30719fb9ad7SBaptiste Daroussin "dedicated_cpus": [] 30819fb9ad7SBaptiste Daroussin} 30919fb9ad7SBaptiste DaroussinEOF 31019fb9ad7SBaptiste Daroussin mkdir -p etc 31119fb9ad7SBaptiste Daroussin cat > etc/master.passwd << EOF 31219fb9ad7SBaptiste Daroussinroot:*:0:0::0:0:Charlie &:/root:/bin/csh 31319fb9ad7SBaptiste Daroussinsys:*:1:0::0:0:Sys:/home/sys:/bin/csh 31419fb9ad7SBaptiste DaroussinEOF 31519fb9ad7SBaptiste Daroussin pwd_mkdb -d etc ${here}/etc/master.passwd 31619fb9ad7SBaptiste Daroussin cat > etc/group << EOF 31719fb9ad7SBaptiste Daroussinwheel:*:0:root 31819fb9ad7SBaptiste Daroussinusers:*:1: 31919fb9ad7SBaptiste DaroussinEOF 32019fb9ad7SBaptiste Daroussin atf_check /usr/libexec/nuageinit ${here}/media/nuageinit config-2 32119fb9ad7SBaptiste Daroussin atf_check -o inline:"ssh-ed25519 my_key_id tdb@host\n" cat home/freebsd/.ssh/authorized_keys 32219fb9ad7SBaptiste Daroussin} 32319fb9ad7SBaptiste Daroussin 32450498135SJose Luis Duranconfig2_network_body() 32550498135SJose Luis Duran{ 326a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 327a42d6f76SBaptiste Daroussin printf "{}" > media/nuageinit/meta_data.json 328a42d6f76SBaptiste Daroussin mynetworks=$(ifconfig -l ether) 329a42d6f76SBaptiste Daroussin if [ -z "$mynetworks" ]; then 330a42d6f76SBaptiste Daroussin atf_skip "a network interface is needed" 331a42d6f76SBaptiste Daroussin fi 332a42d6f76SBaptiste Daroussin set -- $mynetworks 333a42d6f76SBaptiste Daroussin myiface=$1 334a42d6f76SBaptiste Daroussin myaddr=$(ifconfig $myiface ether | awk '/ether/ { print $2 }') 335a42d6f76SBaptiste Daroussincat > media/nuageinit/network_data.json << EOF 336a42d6f76SBaptiste Daroussin{ 337a42d6f76SBaptiste Daroussin "links": [ 338a42d6f76SBaptiste Daroussin { 339a42d6f76SBaptiste Daroussin "ethernet_mac_address": "$myaddr", 340a42d6f76SBaptiste Daroussin "id": "iface0", 34150498135SJose Luis Duran "mtu": null 342a42d6f76SBaptiste Daroussin } 343a42d6f76SBaptiste Daroussin ], 344a42d6f76SBaptiste Daroussin "networks": [ 345a42d6f76SBaptiste Daroussin { 346a42d6f76SBaptiste Daroussin "id": "network0", 347a42d6f76SBaptiste Daroussin "link": "iface0", 348a42d6f76SBaptiste Daroussin "type": "ipv4_dhcp" 349a42d6f76SBaptiste Daroussin }, 350a42d6f76SBaptiste Daroussin { // IPv6 351a42d6f76SBaptiste Daroussin "id": "private-ipv4", 352a42d6f76SBaptiste Daroussin "type": "ipv6", 353a42d6f76SBaptiste Daroussin "link": "iface0", 354a42d6f76SBaptiste Daroussin // supports condensed IPv6 with CIDR netmask 355e72457c4SJose Luis Duran "ip_address": "2001:db8::3257:9652/64", 35650498135SJose Luis Duran "gateway": "fd00::1", 357a42d6f76SBaptiste Daroussin "routes": [ 358a42d6f76SBaptiste Daroussin { 359a42d6f76SBaptiste Daroussin "network": "::", 360a42d6f76SBaptiste Daroussin "netmask": "::", 361a42d6f76SBaptiste Daroussin "gateway": "fd00::1" 362a42d6f76SBaptiste Daroussin }, 363a42d6f76SBaptiste Daroussin { 364a42d6f76SBaptiste Daroussin "network": "::", 365a42d6f76SBaptiste Daroussin "netmask": "ffff:ffff:ffff::", 366a42d6f76SBaptiste Daroussin "gateway": "fd00::1:1" 36750498135SJose Luis Duran } 368a42d6f76SBaptiste Daroussin ], 369a42d6f76SBaptiste Daroussin "network_id": "da5bb487-5193-4a65-a3df-4a0055a8c0d8" 37050498135SJose Luis Duran } 37150498135SJose Luis Duran ] 372a42d6f76SBaptiste Daroussin} 373a42d6f76SBaptiste DaroussinEOF 374e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 375a42d6f76SBaptiste Daroussin cat > network << EOF 376a42d6f76SBaptiste Daroussinifconfig_${myiface}="DHCP" 377e72457c4SJose Luis Duranifconfig_${myiface}_ipv6="inet6 2001:db8::3257:9652/64" 378a42d6f76SBaptiste Daroussinipv6_network_interfaces="${myiface}" 379a42d6f76SBaptiste Daroussinipv6_default_interface="${myiface}" 380a42d6f76SBaptiste DaroussinEOF 381a42d6f76SBaptiste Daroussin cat > routing << EOF 382a42d6f76SBaptiste Daroussinipv6_defaultrouter="fd00::1" 383a42d6f76SBaptiste Daroussinipv6_route_${myiface}="fd00::1 -prefixlen 128 -interface ${myiface}" 384a42d6f76SBaptiste Daroussinipv6_static_routes="${myiface}" 385a42d6f76SBaptiste DaroussinEOF 386e72457c4SJose Luis Duran atf_check -o file:network cat "${PWD}"/etc/rc.conf.d/network 387e72457c4SJose Luis Duran atf_check -o file:routing cat "${PWD}"/etc/rc.conf.d/routing 388a42d6f76SBaptiste Daroussin} 389a42d6f76SBaptiste Daroussin 39050498135SJose Luis Duranconfig2_network_static_v4_body() 39150498135SJose Luis Duran{ 392a42d6f76SBaptiste Daroussin mkdir -p media/nuageinit 393a42d6f76SBaptiste Daroussin printf "{}" > media/nuageinit/meta_data.json 394a42d6f76SBaptiste Daroussin mynetworks=$(ifconfig -l ether) 395a42d6f76SBaptiste Daroussin if [ -z "$mynetworks" ]; then 396a42d6f76SBaptiste Daroussin atf_skip "a network interface is needed" 397a42d6f76SBaptiste Daroussin fi 398a42d6f76SBaptiste Daroussin set -- $mynetworks 399a42d6f76SBaptiste Daroussin myiface=$1 400a42d6f76SBaptiste Daroussin myaddr=$(ifconfig $myiface ether | awk '/ether/ { print $2 }') 401a42d6f76SBaptiste Daroussincat > media/nuageinit/network_data.json << EOF 402a42d6f76SBaptiste Daroussin{ 403a42d6f76SBaptiste Daroussin "links": [ 404a42d6f76SBaptiste Daroussin { 405a42d6f76SBaptiste Daroussin "ethernet_mac_address": "$myaddr", 406a42d6f76SBaptiste Daroussin "id": "iface0", 40750498135SJose Luis Duran "mtu": null 408a42d6f76SBaptiste Daroussin } 409a42d6f76SBaptiste Daroussin ], 410a42d6f76SBaptiste Daroussin "networks": [ 411a42d6f76SBaptiste Daroussin { 412a42d6f76SBaptiste Daroussin "id": "network0", 413a42d6f76SBaptiste Daroussin "link": "iface0", 41450498135SJose Luis Duran "type": "ipv4", 415a42d6f76SBaptiste Daroussin "ip_address": "10.184.0.244", 416a42d6f76SBaptiste Daroussin "netmask": "255.255.240.0", 417a42d6f76SBaptiste Daroussin "routes": [ 418a42d6f76SBaptiste Daroussin { 419a42d6f76SBaptiste Daroussin "network": "10.0.0.0", 420a42d6f76SBaptiste Daroussin "netmask": "255.0.0.0", 421a42d6f76SBaptiste Daroussin "gateway": "11.0.0.1" 422a42d6f76SBaptiste Daroussin }, 423a42d6f76SBaptiste Daroussin { 424a42d6f76SBaptiste Daroussin "network": "0.0.0.0", 425a42d6f76SBaptiste Daroussin "netmask": "0.0.0.0", 426a42d6f76SBaptiste Daroussin "gateway": "23.253.157.1" 427a42d6f76SBaptiste Daroussin } 428a42d6f76SBaptiste Daroussin ] 429a42d6f76SBaptiste Daroussin } 430a42d6f76SBaptiste Daroussin ] 431a42d6f76SBaptiste Daroussin} 432a42d6f76SBaptiste DaroussinEOF 433e72457c4SJose Luis Duran atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 434a42d6f76SBaptiste Daroussin cat > network << EOF 435a42d6f76SBaptiste Daroussinifconfig_${myiface}="inet 10.184.0.244 netmask 255.255.240.0" 436a42d6f76SBaptiste DaroussinEOF 437a42d6f76SBaptiste Daroussin cat > routing << EOF 438a42d6f76SBaptiste Daroussinroute_cloudinit1_${myiface}="-net 10.0.0.0 11.0.0.1 255.0.0.0" 439a42d6f76SBaptiste Daroussindefaultrouter="23.253.157.1" 440a42d6f76SBaptiste Daroussinstatic_routes="cloudinit1_${myiface}" 441a42d6f76SBaptiste DaroussinEOF 442e72457c4SJose Luis Duran atf_check -o file:network cat "${PWD}"/etc/rc.conf.d/network 443e72457c4SJose Luis Duran atf_check -o file:routing cat "${PWD}"/etc/rc.conf.d/routing 444a42d6f76SBaptiste Daroussin} 445a42d6f76SBaptiste Daroussin 44641fe9d53SBaptiste Daroussinconfig2_ssh_keys_head() 44741fe9d53SBaptiste Daroussin{ 44841fe9d53SBaptiste Daroussin atf_set "require.user" root 44941fe9d53SBaptiste Daroussin} 45041fe9d53SBaptiste Daroussinconfig2_ssh_keys_body() 45141fe9d53SBaptiste Daroussin{ 45241fe9d53SBaptiste Daroussin here=$(pwd) 45341fe9d53SBaptiste Daroussin export NUAGE_FAKE_ROOTDIR=$(pwd) 45441fe9d53SBaptiste Daroussin mkdir -p media/nuageinit 45541fe9d53SBaptiste Daroussin touch media/nuageinit/meta_data.json 45641fe9d53SBaptiste Daroussin cat > media/nuageinit/user-data << EOF 45741fe9d53SBaptiste Daroussin#cloud-config 45841fe9d53SBaptiste Daroussinssh_keys: 45941fe9d53SBaptiste Daroussin rsa_private: | 46041fe9d53SBaptiste Daroussin -----BEGIN RSA PRIVATE KEY----- 46141fe9d53SBaptiste Daroussin MIIBxwIBAAJhAKD0YSHy73nUgysO13XsJmd4fHiFyQ+00R7VVu2iV9Qco 46241fe9d53SBaptiste Daroussin ... 46341fe9d53SBaptiste Daroussin -----END RSA PRIVATE KEY----- 46441fe9d53SBaptiste Daroussin rsa_public: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEAoPRhIfLvedSDKw7Xd ... 46541fe9d53SBaptiste Daroussin ed25519_private: | 46641fe9d53SBaptiste Daroussin -----BEGIN OPENSSH PRIVATE KEY----- 46741fe9d53SBaptiste Daroussin blabla 46841fe9d53SBaptiste Daroussin ... 46941fe9d53SBaptiste Daroussin -----END OPENSSH PRIVATE KEY----- 47041fe9d53SBaptiste Daroussin ed25519_public: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK+MH4E8KO32N5CXRvXVqvyZVl0+6ue4DobdhU0FqFd+ 47141fe9d53SBaptiste DaroussinEOF 47241fe9d53SBaptiste Daroussin mkdir -p etc/ssh 47341fe9d53SBaptiste Daroussin cat > etc/master.passwd << EOF 47441fe9d53SBaptiste Daroussinroot:*:0:0::0:0:Charlie &:/root:/bin/csh 47541fe9d53SBaptiste Daroussinsys:*:1:0::0:0:Sys:/home/sys:/bin/csh 47641fe9d53SBaptiste DaroussinEOF 47741fe9d53SBaptiste Daroussin pwd_mkdb -d etc ${here}/etc/master.passwd 47841fe9d53SBaptiste Daroussin cat > etc/group << EOF 47941fe9d53SBaptiste Daroussinwheel:*:0:root 48041fe9d53SBaptiste Daroussinusers:*:1: 48141fe9d53SBaptiste DaroussinEOF 48241fe9d53SBaptiste Daroussin atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 48341fe9d53SBaptiste Daroussin _expected="-----BEGIN RSA PRIVATE KEY----- 48441fe9d53SBaptiste DaroussinMIIBxwIBAAJhAKD0YSHy73nUgysO13XsJmd4fHiFyQ+00R7VVu2iV9Qco 48541fe9d53SBaptiste Daroussin... 48641fe9d53SBaptiste Daroussin-----END RSA PRIVATE KEY----- 48740dafa08SBaptiste Daroussin 48841fe9d53SBaptiste Daroussin" 48941fe9d53SBaptiste Daroussin atf_check -o inline:"${_expected}" cat ${PWD}/etc/ssh/ssh_host_rsa_key 49041fe9d53SBaptiste Daroussin _expected="ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEAoPRhIfLvedSDKw7Xd ...\n" 49141fe9d53SBaptiste Daroussin atf_check -o inline:"${_expected}" cat ${PWD}/etc/ssh/ssh_host_rsa_key.pub 49241fe9d53SBaptiste Daroussin _expected="-----BEGIN OPENSSH PRIVATE KEY----- 49341fe9d53SBaptiste Daroussinblabla 49441fe9d53SBaptiste Daroussin... 49540dafa08SBaptiste Daroussin-----END OPENSSH PRIVATE KEY----- 49640dafa08SBaptiste Daroussin 49740dafa08SBaptiste Daroussin" 49841fe9d53SBaptiste Daroussin atf_check -o inline:"${_expected}" cat ${PWD}/etc/ssh/ssh_host_ed25519_key 49941fe9d53SBaptiste Daroussin _expected="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK+MH4E8KO32N5CXRvXVqvyZVl0+6ue4DobdhU0FqFd+\n" 50041fe9d53SBaptiste Daroussin atf_check -o inline:"${_expected}" cat ${PWD}/etc/ssh/ssh_host_ed25519_key.pub 50141fe9d53SBaptiste Daroussin} 50241fe9d53SBaptiste Daroussin 503f85d0868SBaptiste Daroussin 504f85d0868SBaptiste Daroussinnocloud_userdata_cloudconfig_ssh_pwauth_head() 505f85d0868SBaptiste Daroussin{ 506f85d0868SBaptiste Daroussin atf_set "require.user" root 507f85d0868SBaptiste Daroussin} 508f85d0868SBaptiste Daroussinnocloud_userdata_cloudconfig_ssh_pwauth_body() 509f85d0868SBaptiste Daroussin{ 510f85d0868SBaptiste Daroussin mkdir -p etc 511f85d0868SBaptiste Daroussin cat > etc/master.passwd << EOF 512f85d0868SBaptiste Daroussinroot:*:0:0::0:0:Charlie &:/root:/bin/sh 513f85d0868SBaptiste Daroussinsys:*:1:0::0:0:Sys:/home/sys:/bin/sh 514f85d0868SBaptiste DaroussinEOF 515f85d0868SBaptiste Daroussin pwd_mkdb -d etc "${PWD}"/etc/master.passwd 516f85d0868SBaptiste Daroussin cat > etc/group << EOF 517f85d0868SBaptiste Daroussinwheel:*:0:root 518f85d0868SBaptiste Daroussinusers:*:1: 519f85d0868SBaptiste DaroussinEOF 520f85d0868SBaptiste Daroussin mkdir -p media/nuageinit 521f85d0868SBaptiste Daroussin printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 522f85d0868SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 523f85d0868SBaptiste Daroussin#cloud-config 524f85d0868SBaptiste Daroussinssh_pwauth: true 525f85d0868SBaptiste DaroussinEOF 526f85d0868SBaptiste Daroussin mkdir -p etc/ssh/ 527f85d0868SBaptiste Daroussin touch etc/ssh/sshd_config 528f85d0868SBaptiste Daroussin 529f85d0868SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 530f85d0868SBaptiste Daroussin atf_check -o inline:"PasswordAuthentication yes\n" cat etc/ssh/sshd_config 531f85d0868SBaptiste Daroussin 532f85d0868SBaptiste Daroussin # Same value we don't touch anything 533f85d0868SBaptiste Daroussin printf " PasswordAuthentication yes # I want password\n" > etc/ssh/sshd_config 534f85d0868SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 535f85d0868SBaptiste Daroussin atf_check -o inline:" PasswordAuthentication yes # I want password\n" cat etc/ssh/sshd_config 536f85d0868SBaptiste Daroussin 537f85d0868SBaptiste Daroussin printf " PasswordAuthentication no # Should change\n" > etc/ssh/sshd_config 538f85d0868SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 539f85d0868SBaptiste Daroussin atf_check -o inline:"PasswordAuthentication yes\n" cat etc/ssh/sshd_config 540f85d0868SBaptiste Daroussin 541f85d0868SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 542f85d0868SBaptiste Daroussin#cloud-config 543f85d0868SBaptiste Daroussinssh_pwauth: false 544f85d0868SBaptiste DaroussinEOF 545f85d0868SBaptiste Daroussin 546f85d0868SBaptiste Daroussin printf " PasswordAuthentication no # no passwords\n" > etc/ssh/sshd_config 547f85d0868SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 548f85d0868SBaptiste Daroussin atf_check -o inline:" PasswordAuthentication no # no passwords\n" cat etc/ssh/sshd_config 549f85d0868SBaptiste Daroussin 550f85d0868SBaptiste Daroussin printf " PasswordAuthentication yes # Should change\n" > etc/ssh/sshd_config 551f85d0868SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 552f85d0868SBaptiste Daroussin atf_check -o inline:"PasswordAuthentication no\n" cat etc/ssh/sshd_config 553f85d0868SBaptiste Daroussin} 554f85d0868SBaptiste Daroussin 555c201a119SBaptiste Daroussinnocloud_userdata_cloudconfig_chpasswd_head() 556c201a119SBaptiste Daroussin{ 557c201a119SBaptiste Daroussin atf_set "require.user" root 558c201a119SBaptiste Daroussin} 559c201a119SBaptiste Daroussinnocloud_userdata_cloudconfig_chpasswd_body() 560c201a119SBaptiste Daroussin{ 561c201a119SBaptiste Daroussin mkdir -p etc 562c201a119SBaptiste Daroussin cat > etc/master.passwd << EOF 563c201a119SBaptiste Daroussinroot:*:0:0::0:0:Charlie &:/root:/bin/sh 564c201a119SBaptiste Daroussinsys:*:1:0::0:0:Sys:/home/sys:/bin/sh 565c201a119SBaptiste Daroussinuser:*:1:0::0:0:Sys:/home/sys:/bin/sh 566c201a119SBaptiste DaroussinEOF 567c201a119SBaptiste Daroussin pwd_mkdb -d etc "${PWD}"/etc/master.passwd 568c201a119SBaptiste Daroussin cat > etc/group << EOF 569c201a119SBaptiste Daroussinwheel:*:0:root 570c201a119SBaptiste Daroussinusers:*:1: 571c201a119SBaptiste DaroussinEOF 572c201a119SBaptiste Daroussin mkdir -p media/nuageinit 573c201a119SBaptiste Daroussin printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 574c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 575c201a119SBaptiste Daroussin#cloud-config 576c201a119SBaptiste Daroussinchpasswd: 577c201a119SBaptiste Daroussin expire: true 578c201a119SBaptiste Daroussin users: 579c201a119SBaptiste Daroussin - { user: "sys", password: RANDOM } 580c201a119SBaptiste DaroussinEOF 581c201a119SBaptiste Daroussin 5822a05d577SBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 5832a05d577SBaptiste Daroussin atf_check -o empty -e inline:"nuageinit: Invalid entry for chpasswd.users: missing 'name'\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 584c201a119SBaptiste Daroussin # nothing modified 585c201a119SBaptiste Daroussin atf_check -o inline:"sys:*:1:0::0:0:Sys:/home/sys:/bin/sh\n" pw -R $(pwd) usershow sys 586c201a119SBaptiste Daroussin 587c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 588c201a119SBaptiste Daroussin#cloud-config 589c201a119SBaptiste Daroussinchpasswd: 590c201a119SBaptiste Daroussin expire: true 591c201a119SBaptiste Daroussin users: 592c201a119SBaptiste Daroussin - { name: "sys", pwd: RANDOM } 593c201a119SBaptiste DaroussinEOF 5942a05d577SBaptiste Daroussin atf_check -o empty -e inline:"nuageinit: Invalid entry for chpasswd.users: missing 'password'\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 595c201a119SBaptiste Daroussin # nothing modified 596c201a119SBaptiste Daroussin atf_check -o inline:"sys:*:1:0::0:0:Sys:/home/sys:/bin/sh\n" pw -R $(pwd) usershow sys 597c201a119SBaptiste Daroussin 598c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 599c201a119SBaptiste Daroussin#cloud-config 600c201a119SBaptiste Daroussinchpasswd: 601c201a119SBaptiste Daroussin expire: false 602c201a119SBaptiste Daroussin users: 603c201a119SBaptiste Daroussin - { name: "sys", password: RANDOM } 604c201a119SBaptiste DaroussinEOF 605c201a119SBaptiste Daroussin # not empty because the password is printed to stdout 6062a05d577SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 607c201a119SBaptiste Daroussin atf_check -o match:'sys:\$.*:1:0::0:0:Sys:/home/sys:/bin/sh$' pw -R $(pwd) usershow sys 608c201a119SBaptiste Daroussin 609c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 610c201a119SBaptiste Daroussin#cloud-config 611c201a119SBaptiste Daroussinchpasswd: 612c201a119SBaptiste Daroussin expire: true 613c201a119SBaptiste Daroussin users: 614c201a119SBaptiste Daroussin - { name: "sys", password: RANDOM } 615c201a119SBaptiste DaroussinEOF 616c201a119SBaptiste Daroussin # not empty because the password is printed to stdout 6172a05d577SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 618c201a119SBaptiste Daroussin atf_check -o match:'sys:\$.*:1:0::1:0:Sys:/home/sys:/bin/sh$' pw -R $(pwd) usershow sys 619c201a119SBaptiste Daroussin 620c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 621c201a119SBaptiste Daroussin#cloud-config 622c201a119SBaptiste Daroussinchpasswd: 623c201a119SBaptiste Daroussin expire: true 624c201a119SBaptiste Daroussin users: 625c201a119SBaptiste Daroussin - { name: "user", password: "$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/" } 626c201a119SBaptiste DaroussinEOF 627c201a119SBaptiste Daroussin # not empty because the password is printed to stdout 6282a05d577SBaptiste Daroussin atf_check -o empty -e empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 629c201a119SBaptiste Daroussin atf_check -o inline:'user:$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/:1:0::1:0:Sys:/home/sys:/bin/sh\n' pw -R $(pwd) usershow user 630c201a119SBaptiste Daroussin} 631c201a119SBaptiste Daroussin 632c201a119SBaptiste Daroussin 633c201a119SBaptiste Daroussinnocloud_userdata_cloudconfig_chpasswd_list_string_head() 634c201a119SBaptiste Daroussin{ 635c201a119SBaptiste Daroussin atf_set "require.user" root 636c201a119SBaptiste Daroussin} 637c201a119SBaptiste Daroussinnocloud_userdata_cloudconfig_chpasswd_list_string_body() 638c201a119SBaptiste Daroussin{ 639c201a119SBaptiste Daroussin mkdir -p etc 640c201a119SBaptiste Daroussin cat > etc/master.passwd << EOF 641c201a119SBaptiste Daroussinroot:*:0:0::0:0:Charlie &:/root:/bin/sh 642c201a119SBaptiste Daroussinsys:*:1:0::0:0:Sys:/home/sys:/bin/sh 643c201a119SBaptiste Daroussinuser:*:1:0::0:0:Sys:/home/sys:/bin/sh 644c201a119SBaptiste DaroussinEOF 645c201a119SBaptiste Daroussin pwd_mkdb -d etc "${PWD}"/etc/master.passwd 646c201a119SBaptiste Daroussin cat > etc/group << EOF 647c201a119SBaptiste Daroussinwheel:*:0:root 648c201a119SBaptiste Daroussinusers:*:1: 649c201a119SBaptiste DaroussinEOF 650c201a119SBaptiste Daroussin mkdir -p media/nuageinit 651c201a119SBaptiste Daroussin printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 652c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 653c201a119SBaptiste Daroussin#cloud-config 654c201a119SBaptiste Daroussinchpasswd: 655c201a119SBaptiste Daroussin expire: true 656c201a119SBaptiste Daroussin list: | 657c201a119SBaptiste Daroussin sys:RANDOM 658c201a119SBaptiste DaroussinEOF 659c201a119SBaptiste Daroussin 6602a05d577SBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 6612a05d577SBaptiste Daroussin atf_check -o empty -e inline:"nuageinit: chpasswd.list is deprecated consider using chpasswd.users\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 662c201a119SBaptiste Daroussin atf_check -o match:'sys:\$.*:1:0::1:0:Sys:/home/sys:/bin/sh$' pw -R $(pwd) usershow sys 663c201a119SBaptiste Daroussin 664c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 665c201a119SBaptiste Daroussin#cloud-config 666c201a119SBaptiste Daroussinchpasswd: 667c201a119SBaptiste Daroussin expire: false 668c201a119SBaptiste Daroussin list: | 669c201a119SBaptiste Daroussin sys:plop 670c201a119SBaptiste Daroussin user:$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ 671c201a119SBaptiste Daroussin root:R 672c201a119SBaptiste DaroussinEOF 673c201a119SBaptiste Daroussin 6742a05d577SBaptiste Daroussin atf_check -o empty -e ignore /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 675c201a119SBaptiste Daroussin atf_check -o match:'sys:\$.*:1:0::0:0:Sys:/home/sys:/bin/sh$' pw -R $(pwd) usershow sys 676c201a119SBaptiste Daroussin atf_check -o inline:'user:$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/:1:0::0:0:Sys:/home/sys:/bin/sh\n' pw -R $(pwd) usershow user 677c201a119SBaptiste Daroussin atf_check -o match:'root:\$.*:0:0::0:0:Charlie &:/root:/bin/sh$' pw -R $(pwd) usershow root 678c201a119SBaptiste Daroussin} 679c201a119SBaptiste Daroussin 680c201a119SBaptiste Daroussinnocloud_userdata_cloudconfig_chpasswd_list_list_head() 681c201a119SBaptiste Daroussin{ 682c201a119SBaptiste Daroussin atf_set "require.user" root 683c201a119SBaptiste Daroussin} 684c201a119SBaptiste Daroussinnocloud_userdata_cloudconfig_chpasswd_list_list_body() 685c201a119SBaptiste Daroussin{ 686c201a119SBaptiste Daroussin mkdir -p etc 687c201a119SBaptiste Daroussin cat > etc/master.passwd << EOF 688c201a119SBaptiste Daroussinroot:*:0:0::0:0:Charlie &:/root:/bin/sh 689c201a119SBaptiste Daroussinsys:*:1:0::0:0:Sys:/home/sys:/bin/sh 690c201a119SBaptiste Daroussinuser:*:1:0::0:0:Sys:/home/sys:/bin/sh 691c201a119SBaptiste DaroussinEOF 692c201a119SBaptiste Daroussin pwd_mkdb -d etc "${PWD}"/etc/master.passwd 693c201a119SBaptiste Daroussin cat > etc/group << EOF 694c201a119SBaptiste Daroussinwheel:*:0:root 695c201a119SBaptiste Daroussinusers:*:1: 696c201a119SBaptiste DaroussinEOF 697c201a119SBaptiste Daroussin mkdir -p media/nuageinit 698c201a119SBaptiste Daroussin printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data 699c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 700c201a119SBaptiste Daroussin#cloud-config 701c201a119SBaptiste Daroussinchpasswd: 702c201a119SBaptiste Daroussin expire: true 703c201a119SBaptiste Daroussin list: 704c201a119SBaptiste Daroussin - sys:RANDOM 705c201a119SBaptiste DaroussinEOF 706c201a119SBaptiste Daroussin 7072a05d577SBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud 7082a05d577SBaptiste Daroussin atf_check -o empty -e inline:"nuageinit: chpasswd.list is deprecated consider using chpasswd.users\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 709c201a119SBaptiste Daroussin atf_check -o match:'sys:\$.*:1:0::1:0:Sys:/home/sys:/bin/sh$' pw -R $(pwd) usershow sys 710c201a119SBaptiste Daroussin 711c201a119SBaptiste Daroussin cat > media/nuageinit/user-data << 'EOF' 712c201a119SBaptiste Daroussin#cloud-config 713c201a119SBaptiste Daroussinchpasswd: 714c201a119SBaptiste Daroussin expire: false 715c201a119SBaptiste Daroussin list: 716c201a119SBaptiste Daroussin - sys:plop 717c201a119SBaptiste Daroussin - user:$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ 718c201a119SBaptiste Daroussin - root:R 719c201a119SBaptiste DaroussinEOF 720c201a119SBaptiste Daroussin 7212a05d577SBaptiste Daroussin atf_check -o empty -e ignore /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 722c201a119SBaptiste Daroussin atf_check -o match:'sys:\$.*:1:0::0:0:Sys:/home/sys:/bin/sh$' pw -R $(pwd) usershow sys 723c201a119SBaptiste Daroussin atf_check -o inline:'user:$6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/:1:0::0:0:Sys:/home/sys:/bin/sh\n' pw -R $(pwd) usershow user 724c201a119SBaptiste Daroussin atf_check -o match:'root:\$.*:0:0::0:0:Charlie &:/root:/bin/sh$' pw -R $(pwd) usershow root 725c201a119SBaptiste Daroussin} 726c201a119SBaptiste Daroussin 7272f35a521SSebastien Baylocqconfig2_userdata_runcmd_head() 7282f35a521SSebastien Baylocq{ 7292f35a521SSebastien Baylocq atf_set "require.user" root 7302f35a521SSebastien Baylocq} 7312f35a521SSebastien Baylocqconfig2_userdata_runcmd_body() 7322f35a521SSebastien Baylocq{ 7332f35a521SSebastien Baylocq mkdir -p media/nuageinit 7342f35a521SSebastien Baylocq setup_test_adduser 7352f35a521SSebastien Baylocq printf "{}" > media/nuageinit/meta_data.json 7362f35a521SSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 7372f35a521SSebastien Baylocq#cloud-config 7382f35a521SSebastien Baylocqruncmd: 7392f35a521SSebastien BaylocqEOF 7402f35a521SSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 74140dafa08SBaptiste Daroussin atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 7422f35a521SSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 7432f35a521SSebastien Baylocq#cloud-config 7442f35a521SSebastien Baylocqruncmd: 7452f35a521SSebastien Baylocq - plop 7462f35a521SSebastien BaylocqEOF 7472f35a521SSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 7488feca60dSBaptiste Daroussin atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 7498feca60dSBaptiste Daroussin test -f var/cache/nuageinit/runcmds || atf_fail "File not created" 7508feca60dSBaptiste Daroussin test -x var/cache/nuageinit/runcmds || atf_fail "Missing execution permission" 7518feca60dSBaptiste Daroussin atf_check -o inline:"#!/bin/sh\nplop\n" cat var/cache/nuageinit/runcmds 7522f35a521SSebastien Baylocq 7532f35a521SSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 7542f35a521SSebastien Baylocq#cloud-config 7552f35a521SSebastien Baylocqruncmd: 7568feca60dSBaptiste Daroussin - echo "yeah!" 7578feca60dSBaptiste Daroussin - uname -s 7582f35a521SSebastien BaylocqEOF 7592f35a521SSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 7602f35a521SSebastien Baylocq atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 7618feca60dSBaptiste Daroussin atf_check -o inline:"#!/bin/sh\necho \"yeah!\"\nuname -s\n" cat var/cache/nuageinit/runcmds 7622f35a521SSebastien Baylocq} 7632f35a521SSebastien Baylocq 764076fec1bSSebastien Baylocqconfig2_userdata_packages_head() 765076fec1bSSebastien Baylocq{ 766076fec1bSSebastien Baylocq atf_set "require.user" root 767076fec1bSSebastien Baylocq} 768682af960SSebastien Baylocq 769076fec1bSSebastien Baylocqconfig2_userdata_packages_body() 770076fec1bSSebastien Baylocq{ 771076fec1bSSebastien Baylocq mkdir -p media/nuageinit 772076fec1bSSebastien Baylocq setup_test_adduser 773076fec1bSSebastien Baylocq export NUAGE_RUN_TESTS=1 774076fec1bSSebastien Baylocq printf "{}" > media/nuageinit/meta_data.json 775076fec1bSSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 776076fec1bSSebastien Baylocq#cloud-config 777076fec1bSSebastien Baylocqpackages: 778076fec1bSSebastien BaylocqEOF 779076fec1bSSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 78040dafa08SBaptiste Daroussin atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 781076fec1bSSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 782076fec1bSSebastien Baylocq#cloud-config 783076fec1bSSebastien Baylocqpackages: 784076fec1bSSebastien Baylocq - yeah/plop 785076fec1bSSebastien BaylocqEOF 786076fec1bSSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 7872a05d577SBaptiste Daroussin atf_check -s exit:0 -o inline:"pkg install -y yeah/plop\npkg info -q yeah/plop\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 788076fec1bSSebastien Baylocq 789076fec1bSSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 790076fec1bSSebastien Baylocq#cloud-config 791076fec1bSSebastien Baylocqpackages: 792076fec1bSSebastien Baylocq - curl 793076fec1bSSebastien BaylocqEOF 794076fec1bSSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 7952a05d577SBaptiste Daroussin atf_check -o inline:"pkg install -y curl\npkg info -q curl\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 796076fec1bSSebastien Baylocq 797076fec1bSSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 798076fec1bSSebastien Baylocq#cloud-config 799076fec1bSSebastien Baylocqpackages: 800076fec1bSSebastien Baylocq - curl 801076fec1bSSebastien Baylocq - meh: bla 802076fec1bSSebastien BaylocqEOF 803076fec1bSSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 8042a05d577SBaptiste Daroussin atf_check -o inline:"pkg install -y curl\npkg info -q curl\n" -e inline:"nuageinit: Invalid type: table for packages entry number 2\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 805076fec1bSSebastien Baylocq} 806076fec1bSSebastien Baylocq 807682af960SSebastien Baylocqconfig2_userdata_update_packages_body() 808682af960SSebastien Baylocq{ 809682af960SSebastien Baylocq mkdir -p media/nuageinit 810682af960SSebastien Baylocq setup_test_adduser 811682af960SSebastien Baylocq export NUAGE_RUN_TESTS=1 812682af960SSebastien Baylocq printf "{}" > media/nuageinit/meta_data.json 813682af960SSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 814682af960SSebastien Baylocq#cloud-config 815682af960SSebastien Baylocqpackage_update: true 816682af960SSebastien BaylocqEOF 817682af960SSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 8182a05d577SBaptiste Daroussin atf_check -o inline:"pkg update -y\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 819682af960SSebastien Baylocq} 820682af960SSebastien Baylocq 821682af960SSebastien Baylocqconfig2_userdata_upgrade_packages_body() 822682af960SSebastien Baylocq{ 823682af960SSebastien Baylocq mkdir -p media/nuageinit 824682af960SSebastien Baylocq setup_test_adduser 825682af960SSebastien Baylocq export NUAGE_RUN_TESTS=1 826682af960SSebastien Baylocq printf "{}" > media/nuageinit/meta_data.json 827682af960SSebastien Baylocq cat > media/nuageinit/user_data << 'EOF' 828682af960SSebastien Baylocq#cloud-config 829682af960SSebastien Baylocqpackage_upgrade: true 830682af960SSebastien BaylocqEOF 831682af960SSebastien Baylocq chmod 755 "${PWD}"/media/nuageinit/user_data 8322a05d577SBaptiste Daroussin atf_check -o inline:"pkg upgrade -y\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 833682af960SSebastien Baylocq} 834682af960SSebastien Baylocq 83509545628SBaptiste Daroussinconfig2_userdata_shebang_body() 83609545628SBaptiste Daroussin{ 83709545628SBaptiste Daroussin mkdir -p media/nuageinit 83809545628SBaptiste Daroussin setup_test_adduser 83909545628SBaptiste Daroussin printf "{}" > media/nuageinit/meta_data.json 84009545628SBaptiste Daroussin cat > media/nuageinit/user_data <<EOF 84109545628SBaptiste Daroussin#!/we/dont/care 84209545628SBaptiste Daroussinanything 84309545628SBaptiste DaroussinEOF 84409545628SBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 84509545628SBaptiste Daroussin test -f var/cache/nuageinit/user_data || atf_fail "File not created" 84609545628SBaptiste Daroussin test -x var/cache/nuageinit/user_data || atf_fail "Missing execution permission" 84709545628SBaptiste Daroussin atf_check -o inline:"#!/we/dont/care\nanything\n" cat var/cache/nuageinit/user_data 84809545628SBaptiste Daroussin cat > media/nuageinit/user_data <<EOF 84909545628SBaptiste Daroussin/we/dont/care 85009545628SBaptiste DaroussinEOF 85109545628SBaptiste Daroussin rm var/cache/nuageinit/user_data 85209545628SBaptiste Daroussin if [ -f var/cache/nuageinit/user_data ]; then 85309545628SBaptiste Daroussin atf_fail "File should not have been created" 85409545628SBaptiste Daroussin fi 85509545628SBaptiste Daroussin} 85609545628SBaptiste Daroussin 85719a7ea3cSBaptiste Daroussinconfig2_userdata_write_files_body() 85819a7ea3cSBaptiste Daroussin{ 85919a7ea3cSBaptiste Daroussin mkdir -p media/nuageinit 86019a7ea3cSBaptiste Daroussin setup_test_adduser 86119a7ea3cSBaptiste Daroussin printf "{}" > media/nuageinit/meta_data.json 86219a7ea3cSBaptiste Daroussin cat > media/nuageinit/user_data <<EOF 86319a7ea3cSBaptiste Daroussin#cloud-config 86419a7ea3cSBaptiste Daroussinwrite_files: 86519a7ea3cSBaptiste Daroussin- content: "plop" 86619a7ea3cSBaptiste Daroussin path: /file1 86719a7ea3cSBaptiste Daroussin- path: /emptyfile 86819a7ea3cSBaptiste Daroussin- content: !!binary | 86919a7ea3cSBaptiste Daroussin YmxhCg== 87019a7ea3cSBaptiste Daroussin path: /file_base64 87119a7ea3cSBaptiste Daroussin encoding: b64 87219a7ea3cSBaptiste Daroussin permissions: '0755' 87319a7ea3cSBaptiste Daroussin owner: nobody 87419a7ea3cSBaptiste Daroussin- content: "bob" 87519a7ea3cSBaptiste Daroussin path: "/foo" 87619a7ea3cSBaptiste Daroussin defer: true 87719a7ea3cSBaptiste DaroussinEOF 87819a7ea3cSBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 87919a7ea3cSBaptiste Daroussin atf_check -o inline:"plop" cat file1 88019a7ea3cSBaptiste Daroussin atf_check -o inline:"" cat emptyfile 88119a7ea3cSBaptiste Daroussin atf_check -o inline:"bla\n" cat file_base64 88219a7ea3cSBaptiste Daroussin test -f foo && atf_fail "foo creation should have been defered" 88319a7ea3cSBaptiste Daroussin atf_check -o match:"^-rwxr-xr-x.*nobody" ls -l file_base64 88419a7ea3cSBaptiste Daroussin rm file1 emptyfile file_base64 88519a7ea3cSBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit postnet 88619a7ea3cSBaptiste Daroussin test -f file1 -o -f emptyfile -o -f file_base64 && atf_fail "defer not working properly" 88719a7ea3cSBaptiste Daroussin atf_check -o inline:"bob" cat foo 88819a7ea3cSBaptiste Daroussin} 88919a7ea3cSBaptiste Daroussin 890f1dd507bSBaptiste Daroussinconfig2_userdata_fqdn_and_hostname_body() 891f1dd507bSBaptiste Daroussin{ 892f1dd507bSBaptiste Daroussin mkdir -p media/nuageinit 893f1dd507bSBaptiste Daroussin setup_test_adduser 894f1dd507bSBaptiste Daroussin printf "{}" > media/nuageinit/meta_data.json 895f1dd507bSBaptiste Daroussin cat > media/nuageinit/user_data <<EOF 896f1dd507bSBaptiste Daroussin#cloud-config 897f1dd507bSBaptiste Daroussinfqdn: host.domain.tld 898f1dd507bSBaptiste Daroussinhostname: host 899f1dd507bSBaptiste DaroussinEOF 900f1dd507bSBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 901f1dd507bSBaptiste Daroussin atf_check -o inline:"hostname=\"host.domain.tld\"\n" cat ${PWD}/etc/rc.conf.d/hostname 902f1dd507bSBaptiste Daroussin cat > media/nuageinit/user_data <<EOF 903f1dd507bSBaptiste Daroussin#cloud-config 904f1dd507bSBaptiste Daroussinhostname: host 905f1dd507bSBaptiste DaroussinEOF 906f1dd507bSBaptiste Daroussin atf_check -o empty /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 907f1dd507bSBaptiste Daroussin atf_check -o inline:"hostname=\"host\"\n" cat ${PWD}/etc/rc.conf.d/hostname 908f1dd507bSBaptiste Daroussin} 909f1dd507bSBaptiste Daroussin 910a42d6f76SBaptiste Daroussinatf_init_test_cases() 911a42d6f76SBaptiste Daroussin{ 912a42d6f76SBaptiste Daroussin atf_add_test_case args 913a42d6f76SBaptiste Daroussin atf_add_test_case nocloud 914a42d6f76SBaptiste Daroussin atf_add_test_case nocloud_userdata_script 915cde66424SBaptiste Daroussin atf_add_test_case nocloud_user_data_script 916a42d6f76SBaptiste Daroussin atf_add_test_case nocloud_userdata_cloudconfig_users 917a42d6f76SBaptiste Daroussin atf_add_test_case nocloud_network 918a42d6f76SBaptiste Daroussin atf_add_test_case config2 919a42d6f76SBaptiste Daroussin atf_add_test_case config2_pubkeys 920cde66424SBaptiste Daroussin atf_add_test_case config2_pubkeys_user_data 92119fb9ad7SBaptiste Daroussin atf_add_test_case config2_pubkeys_meta_data 922a42d6f76SBaptiste Daroussin atf_add_test_case config2_network 923a42d6f76SBaptiste Daroussin atf_add_test_case config2_network_static_v4 92441fe9d53SBaptiste Daroussin atf_add_test_case config2_ssh_keys 925f85d0868SBaptiste Daroussin atf_add_test_case nocloud_userdata_cloudconfig_ssh_pwauth 926c201a119SBaptiste Daroussin atf_add_test_case nocloud_userdata_cloudconfig_chpasswd 927c201a119SBaptiste Daroussin atf_add_test_case nocloud_userdata_cloudconfig_chpasswd_list_string 928c201a119SBaptiste Daroussin atf_add_test_case nocloud_userdata_cloudconfig_chpasswd_list_list 9292f35a521SSebastien Baylocq atf_add_test_case config2_userdata_runcmd 930076fec1bSSebastien Baylocq atf_add_test_case config2_userdata_packages 931682af960SSebastien Baylocq atf_add_test_case config2_userdata_update_packages 932682af960SSebastien Baylocq atf_add_test_case config2_userdata_upgrade_packages 93309545628SBaptiste Daroussin atf_add_test_case config2_userdata_shebang 934f1dd507bSBaptiste Daroussin atf_add_test_case config2_userdata_fqdn_and_hostname 93519a7ea3cSBaptiste Daroussin atf_add_test_case config2_userdata_write_files 936a42d6f76SBaptiste Daroussin} 937