summaryrefslogtreecommitdiff
path: root/tests/cloud_tests/testcases
diff options
context:
space:
mode:
authorJoshua Powers <josh.powers@canonical.com>2017-10-02 14:32:48 -0700
committerScott Moser <smoser@brickies.net>2017-10-03 09:01:30 -0400
commit0ee829f91322ae1788ee6fb2a164cf06cdfff7db (patch)
treed5e5f6505eebf9784d60644c254f1d7cb422e51d /tests/cloud_tests/testcases
parent9d2a87dc386b7aed1a8243d599676e78ed358749 (diff)
downloadvyos-cloud-init-0ee829f91322ae1788ee6fb2a164cf06cdfff7db.tar.gz
vyos-cloud-init-0ee829f91322ae1788ee6fb2a164cf06cdfff7db.zip
tests: Combine integration configs and testcases
Combine the configs and testcases directories, so all files are together in one place. Update the test config location as well.
Diffstat (limited to 'tests/cloud_tests/testcases')
-rw-r--r--tests/cloud_tests/testcases/bugs/README.md13
-rw-r--r--tests/cloud_tests/testcases/bugs/lp1511485.yaml11
-rw-r--r--tests/cloud_tests/testcases/bugs/lp1611074.yaml8
-rw-r--r--tests/cloud_tests/testcases/bugs/lp1628337.yaml23
-rw-r--r--tests/cloud_tests/testcases/examples/README.md12
-rw-r--r--tests/cloud_tests/testcases/examples/TODO.md15
-rw-r--r--tests/cloud_tests/testcases/examples/add_apt_repositories.yaml23
-rw-r--r--tests/cloud_tests/testcases/examples/alter_completion_message.yaml16
-rw-r--r--tests/cloud_tests/testcases/examples/configure_instance_trusted_ca_certificates.yaml41
-rw-r--r--tests/cloud_tests/testcases/examples/configure_instances_ssh_keys.yaml63
-rw-r--r--tests/cloud_tests/testcases/examples/including_user_groups.yaml53
-rw-r--r--tests/cloud_tests/testcases/examples/install_arbitrary_packages.yaml20
-rw-r--r--tests/cloud_tests/testcases/examples/install_run_chef_recipes.yaml103
-rw-r--r--tests/cloud_tests/testcases/examples/run_apt_upgrade.yaml11
-rw-r--r--tests/cloud_tests/testcases/examples/run_commands.yaml16
-rw-r--r--tests/cloud_tests/testcases/examples/run_commands_first_boot.yaml16
-rw-r--r--tests/cloud_tests/testcases/examples/setup_run_puppet.yaml55
-rw-r--r--tests/cloud_tests/testcases/examples/writing_out_arbitrary_files.yaml45
-rw-r--r--tests/cloud_tests/testcases/main/README.md11
-rw-r--r--tests/cloud_tests/testcases/main/command_output_simple.yaml13
-rw-r--r--tests/cloud_tests/testcases/modules/README.md12
-rw-r--r--tests/cloud_tests/testcases/modules/TODO.md98
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_conf.yaml21
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_disable_suites.yaml20
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_primary.yaml26
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_proxy.yaml18
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_security.yaml18
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_sources_key.yaml50
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_sources_keyserver.yaml23
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_sources_list.yaml22
-rw-r--r--tests/cloud_tests/testcases/modules/apt_configure_sources_ppa.yaml29
-rw-r--r--tests/cloud_tests/testcases/modules/apt_pipelining_disable.yaml15
-rw-r--r--tests/cloud_tests/testcases/modules/apt_pipelining_os.yaml15
-rw-r--r--tests/cloud_tests/testcases/modules/bootcmd.yaml13
-rw-r--r--tests/cloud_tests/testcases/modules/byobu.yaml20
-rw-r--r--tests/cloud_tests/testcases/modules/ca_certs.yaml52
-rw-r--r--tests/cloud_tests/testcases/modules/debug_disable.yaml9
-rw-r--r--tests/cloud_tests/testcases/modules/debug_enable.yaml9
-rw-r--r--tests/cloud_tests/testcases/modules/final_message.yaml13
-rw-r--r--tests/cloud_tests/testcases/modules/keys_to_console.yaml15
-rw-r--r--tests/cloud_tests/testcases/modules/landscape.yaml28
-rw-r--r--tests/cloud_tests/testcases/modules/locale.yaml22
-rw-r--r--tests/cloud_tests/testcases/modules/lxd_bridge.yaml32
-rw-r--r--tests/cloud_tests/testcases/modules/lxd_dir.yaml19
-rw-r--r--tests/cloud_tests/testcases/modules/ntp.yaml21
-rw-r--r--tests/cloud_tests/testcases/modules/ntp_pools.yaml31
-rw-r--r--tests/cloud_tests/testcases/modules/ntp_servers.yaml27
-rw-r--r--tests/cloud_tests/testcases/modules/package_update_upgrade_install.yaml33
-rw-r--r--tests/cloud_tests/testcases/modules/runcmd.yaml13
-rw-r--r--tests/cloud_tests/testcases/modules/salt_minion.yaml34
-rw-r--r--tests/cloud_tests/testcases/modules/seed_random_command.yaml18
-rw-r--r--tests/cloud_tests/testcases/modules/seed_random_data.yaml15
-rw-r--r--tests/cloud_tests/testcases/modules/set_hostname.yaml20
-rw-r--r--tests/cloud_tests/testcases/modules/set_hostname_fqdn.yaml22
-rw-r--r--tests/cloud_tests/testcases/modules/set_password.yaml19
-rw-r--r--tests/cloud_tests/testcases/modules/set_password_expire.yaml30
-rw-r--r--tests/cloud_tests/testcases/modules/set_password_list.yaml40
-rw-r--r--tests/cloud_tests/testcases/modules/set_password_list_string.yaml40
-rw-r--r--tests/cloud_tests/testcases/modules/snappy.yaml15
-rw-r--r--tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_disable.yaml15
-rw-r--r--tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_enable.yaml21
-rw-r--r--tests/cloud_tests/testcases/modules/ssh_import_id.yaml17
-rw-r--r--tests/cloud_tests/testcases/modules/ssh_keys_generate.yaml44
-rw-r--r--tests/cloud_tests/testcases/modules/ssh_keys_provided.yaml105
-rw-r--r--tests/cloud_tests/testcases/modules/timezone.yaml16
-rw-r--r--tests/cloud_tests/testcases/modules/user_groups.yaml52
-rw-r--r--tests/cloud_tests/testcases/modules/write_files.yaml46
67 files changed, 1861 insertions, 0 deletions
diff --git a/tests/cloud_tests/testcases/bugs/README.md b/tests/cloud_tests/testcases/bugs/README.md
new file mode 100644
index 00000000..09ce0765
--- /dev/null
+++ b/tests/cloud_tests/testcases/bugs/README.md
@@ -0,0 +1,13 @@
+# Bug Test Configs
+
+## purpose
+Configs that reproduce bugs filed against cloud-init. Having test configs for
+cloud-init bugs ensures that the fixes do not break in the future, and makes it
+easy to see how many systems and platforms are effected by a new bug.
+
+## structure
+Should have one test config for most bugs filed. The name of the test should
+contain ``lp`` followed by the bug number. It may also be useful to add a
+comment to each bug config with a summary copied from the bug report.
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/bugs/lp1511485.yaml b/tests/cloud_tests/testcases/bugs/lp1511485.yaml
new file mode 100644
index 00000000..ebf9763f
--- /dev/null
+++ b/tests/cloud_tests/testcases/bugs/lp1511485.yaml
@@ -0,0 +1,11 @@
+#
+# LP Bug 1511485: final_message is silent on ubuntu-12.04.5 / cloud-init 0.6.3
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ final_message: "Final message from cloud-config"
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/bugs/lp1611074.yaml b/tests/cloud_tests/testcases/bugs/lp1611074.yaml
new file mode 100644
index 00000000..960679d5
--- /dev/null
+++ b/tests/cloud_tests/testcases/bugs/lp1611074.yaml
@@ -0,0 +1,8 @@
+#
+# LP Bug 1611074: Reformatting of ephemeral drive fails on resize of Azure VM
+#
+# 2016-11-18: Disabled until test written
+#
+enabled: False
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/bugs/lp1628337.yaml b/tests/cloud_tests/testcases/bugs/lp1628337.yaml
new file mode 100644
index 00000000..e39b3cd8
--- /dev/null
+++ b/tests/cloud_tests/testcases/bugs/lp1628337.yaml
@@ -0,0 +1,23 @@
+#
+# LP Bug 1628337: cloud-init tries to install NTP before even configuring the archives
+#
+required_features:
+ - apt
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ ntp:
+ servers: ['ntp.ubuntu.com']
+ apt:
+ primary:
+ - arches: [default]
+ uri: http://us.archive.ubuntu.com/ubuntu/
+collect_sciprts:
+ ntp.conf: |
+ #!/bin/bash
+ cat /etc/ntp.conf
+ sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/README.md b/tests/cloud_tests/testcases/examples/README.md
new file mode 100644
index 00000000..110a223b
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/README.md
@@ -0,0 +1,12 @@
+# Example Test Configs
+
+## Purpose
+This folder contains example cloud configs found on
+[cloudinit.readthedocs.io](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).
+Examples covered by other tests, like modules, are excluded from tests here
+to prevent duplication and reduce test time.
+
+## Structure
+One test per example test config on cloudinit.readthedocs.io
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/TODO.md b/tests/cloud_tests/testcases/examples/TODO.md
new file mode 100644
index 00000000..8db0e98e
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/TODO.md
@@ -0,0 +1,15 @@
+# Missing Examples
+
+Below lists each of the issing examples and why it is not currently added.
+
+ - Chef (takes > 60 seconds to run)
+ - Puppet (takes > 60 seconds to run)
+ - Manage resolve.conf (lxd backend overrides changes)
+ - Adding a yum repository (need centos system)
+ - Register RedHat Subscription (need centos system + subscription)
+ - Adjust mount points mounted (need multiple disks)
+ - Call a url when finished (need end point)
+ - Reboot/poweroff when finished (how to test)
+ - Disk setup (need multiple disks)
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/add_apt_repositories.yaml b/tests/cloud_tests/testcases/examples/add_apt_repositories.yaml
new file mode 100644
index 00000000..4b8575f7
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/add_apt_repositories.yaml
@@ -0,0 +1,23 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+required_features:
+ - apt
+cloud_config: |
+ #cloud-config
+ apt:
+ primary:
+ - arches: [default]
+ uri: "http://www.gtlib.gatech.edu/pub/ubuntu-releases/"
+collect_scripts:
+ ubuntu.sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list | grep -v '^#' | sed '/^\s*$/d' | grep archive.ubuntu.com | wc -l
+ gatech.sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list | grep -v '^#' | sed '/^\s*$/d' | grep gtlib.gatech.edu | wc -l
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/alter_completion_message.yaml b/tests/cloud_tests/testcases/examples/alter_completion_message.yaml
new file mode 100644
index 00000000..9e154f80
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/alter_completion_message.yaml
@@ -0,0 +1,16 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ final_message: |
+ This is my final message!
+ $version
+ $timestamp
+ $datasource
+ $uptime
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/configure_instance_trusted_ca_certificates.yaml b/tests/cloud_tests/testcases/examples/configure_instance_trusted_ca_certificates.yaml
new file mode 100644
index 00000000..ad32b088
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/configure_instance_trusted_ca_certificates.yaml
@@ -0,0 +1,41 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ ca-certs:
+ # If present and set to True, the 'remove-defaults' parameter will remove
+ # all the default trusted CA certificates that are normally shipped with
+ # Ubuntu.
+ # This is mainly for paranoid admins - most users will not need this
+ # functionality.
+ remove-defaults: true
+
+ # If present, the 'trusted' parameter should contain a certificate (or list
+ # of certificates) to add to the system as trusted CA certificates.
+ # Pay close attention to the YAML multiline list syntax. The example shown
+ # here is for a list of multiline certificates.
+ trusted:
+ - |
+ -----BEGIN CERTIFICATE-----
+ YOUR-ORGS-TRUSTED-CA-CERT-HERE
+ -----END CERTIFICATE-----
+ - |
+ -----BEGIN CERTIFICATE-----
+ YOUR-ORGS-TRUSTED-CA-CERT-HERE
+ -----END CERTIFICATE-----
+collect_scripts:
+ cloudinit_certs: |
+ #!/bin/bash
+ cat /etc/ssl/certs/cloud-init-ca-certs.pem
+ cert_count_ca: |
+ #!/bin/bash
+ wc -l /etc/ssl/certs/ca-certificates.crt
+ cert_count_cloudinit: |
+ #!/bin/bash
+ wc -l /etc/ssl/certs/cloud-init-ca-certs.pem
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/configure_instances_ssh_keys.yaml b/tests/cloud_tests/testcases/examples/configure_instances_ssh_keys.yaml
new file mode 100644
index 00000000..f3eaf3ce
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/configure_instances_ssh_keys.yaml
@@ -0,0 +1,63 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ ssh_authorized_keys:
+ - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEA3FSyQwBI6Z+nCSjUUk8EEAnnkhXlukKoUPND/RRClWz2s5TCzIkd3Ou5+Cyz71X0XmazM3l5WgeErvtIwQMyT1KjNoMhoJMrJnWqQPOt5Q8zWd9qG7PBl9+eiH5qV7NZ mykey@host
+ - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3I7VUf2l5gSn5uavROsc5HRDpZdQueUq5ozemNSj8T7enqKHOEaFoU2VoPgGEWC9RyzSQVeyD6s7APMcE82EtmW4skVEgEGSbDc1pvxzxtchBj78hJP6Cf5TCMFSXw+Fz5rF1dR23QDbN1mkHs7adr8GW4kSWqU7Q7NDwfIrJJtO7Hi42GyXtvEONHbiRPOe8stqUly7MvUoN+5kfjBM8Qqpfl2+FNhTYWpMfYdPUnE7u536WqzFmsaqJctz3gBxH9Ex7dFtrxR4qiqEr9Qtlu3xGn7Bw07/+i1D+ey3ONkZLN+LQ714cgj8fRS4Hj29SCmXp5Kt5/82cD/VN3NtHw== smoser@brickies
+
+ # Send pre-generated ssh private keys to the server
+ # If these are present, they will be written to /etc/ssh and
+ # new random keys will not be generated
+ # in addition to 'rsa' and 'dsa' as shown below, 'ecdsa' is also supported
+ ssh_keys:
+ rsa_private: |
+ -----BEGIN RSA PRIVATE KEY-----
+ MIIBxwIBAAJhAKD0YSHy73nUgysO13XsJmd4fHiFyQ+00R7VVu2iV9Qcon2LZS/x
+ 1cydPZ4pQpfjEha6WxZ6o8ci/Ea/w0n+0HGPwaxlEG2Z9inNtj3pgFrYcRztfECb
+ 1j6HCibZbAzYtwIBIwJgO8h72WjcmvcpZ8OvHSvTwAguO2TkR6mPgHsgSaKy6GJo
+ PUJnaZRWuba/HX0KGyhz19nPzLpzG5f0fYahlMJAyc13FV7K6kMBPXTRR6FxgHEg
+ L0MPC7cdqAwOVNcPY6A7AjEA1bNaIjOzFN2sfZX0j7OMhQuc4zP7r80zaGc5oy6W
+ p58hRAncFKEvnEq2CeL3vtuZAjEAwNBHpbNsBYTRPCHM7rZuG/iBtwp8Rxhc9I5w
+ ixvzMgi+HpGLWzUIBS+P/XhekIjPAjA285rVmEP+DR255Ls65QbgYhJmTzIXQ2T9
+ luLvcmFBC6l35Uc4gTgg4ALsmXLn71MCMGMpSWspEvuGInayTCL+vEjmNBT+FAdO
+ W7D4zCpI43jRS9U06JVOeSc9CDk2lwiA3wIwCTB/6uc8Cq85D9YqpM10FuHjKpnP
+ REPPOyrAspdeOAV+6VKRavstea7+2DZmSUgE
+ -----END RSA PRIVATE KEY-----
+
+ rsa_public: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEAoPRhIfLvedSDKw7XdewmZ3h8eIXJD7TRHtVW7aJX1ByifYtlL/HVzJ09nilCl+MSFrpbFnqjxyL8Rr/DSf7QcY/BrGUQbZn2Kc22PemAWthxHO18QJvWPocKJtlsDNi3 smoser@localhost
+
+ dsa_private: |
+ -----BEGIN DSA PRIVATE KEY-----
+ MIIBuwIBAAKBgQDP2HLu7pTExL89USyM0264RCyWX/CMLmukxX0Jdbm29ax8FBJT
+ pLrO8TIXVY5rPAJm1dTHnpuyJhOvU9G7M8tPUABtzSJh4GVSHlwaCfycwcpLv9TX
+ DgWIpSj+6EiHCyaRlB1/CBp9RiaB+10QcFbm+lapuET+/Au6vSDp9IRtlQIVAIMR
+ 8KucvUYbOEI+yv+5LW9u3z/BAoGBAI0q6JP+JvJmwZFaeCMMVxXUbqiSko/P1lsa
+ LNNBHZ5/8MOUIm8rB2FC6ziidfueJpqTMqeQmSAlEBCwnwreUnGfRrKoJpyPNENY
+ d15MG6N5J+z81sEcHFeprryZ+D3Ge9VjPq3Tf3NhKKwCDQ0240aPezbnjPeFm4mH
+ bYxxcZ9GAoGAXmLIFSQgiAPu459rCKxT46tHJtM0QfnNiEnQLbFluefZ/yiI4DI3
+ 8UzTCOXLhUA7ybmZha+D/csj15Y9/BNFuO7unzVhikCQV9DTeXX46pG4s1o23JKC
+ /QaYWNMZ7kTRv+wWow9MhGiVdML4ZN4XnifuO5krqAybngIy66PMEoQCFEIsKKWv
+ 99iziAH0KBMVbxy03Trz
+ -----END DSA PRIVATE KEY-----
+
+ dsa_public: ssh-dsa AAAAB3NzaC1kc3MAAACBAM/Ycu7ulMTEvz1RLIzTbrhELJZf8Iwua6TFfQl1ubb1rHwUElOkus7xMhdVjms8AmbV1Meem7ImE69T0bszy09QAG3NImHgZVIeXBoJ/JzByku/1NcOBYilKP7oSIcLJpGUHX8IGn1GJoH7XRBwVub6Vqm4RP78C7q9IOn0hG2VAAAAFQCDEfCrnL1GGzhCPsr/uS1vbt8/wQAAAIEAjSrok/4m8mbBkVp4IwxXFdRuqJKSj8/WWxos00Ednn/ww5QibysHYULrOKJ1+54mmpMyp5CZICUQELCfCt5ScZ9GsqgmnI80Q1h3Xkwbo3kn7PzWwRwcV6muvJn4PcZ71WM+rdN/c2EorAINDTbjRo97NueM94WbiYdtjHFxn0YAAACAXmLIFSQgiAPu459rCKxT46tHJtM0QfnNiEnQLbFluefZ/yiI4DI38UzTCOXLhUA7ybmZha+D/csj15Y9/BNFuO7unzVhikCQV9DTeXX46pG4s1o23JKC/QaYWNMZ7kTRv+wWow9MhGiVdML4ZN4XnifuO5krqAybngIy66PMEoQ= smoser@localhost
+collect_scripts:
+ cert_count: |
+ #!/bin/bash
+ ls | wc -l
+ dsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_dsa_key.pub
+ rsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_rsa_key.pub
+ auth_keys: |
+ #!/bin/bash
+ cat /home/ubuntu/.ssh/authorized_keys
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/including_user_groups.yaml b/tests/cloud_tests/testcases/examples/including_user_groups.yaml
new file mode 100644
index 00000000..0aa7ad21
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/including_user_groups.yaml
@@ -0,0 +1,53 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ # Add groups to the system
+ groups:
+ - secret: [foobar,barfoo]
+ - cloud-users
+
+ # Add users to the system. Users are added after groups are added.
+ users:
+ - default
+ - name: foobar
+ gecos: Foo B. Bar
+ primary-group: foobar
+ groups: users
+ expiredate: 2038-01-19
+ lock_passwd: false
+ passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/
+ - name: barfoo
+ gecos: Bar B. Foo
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ groups: cloud-users
+ lock_passwd: true
+ - name: cloudy
+ gecos: Magic Cloud App Daemon User
+ inactive: true
+ system: true
+collect_scripts:
+ group_ubuntu: |
+ #!/bin/bash
+ getent group ubuntu
+ group_cloud_users: |
+ #!/bin/bash
+ getent group cloud-users
+ user_ubuntu: |
+ #!/bin/bash
+ getent passwd ubuntu
+ user_foobar: |
+ #!/bin/bash
+ getent passwd foobar
+ user_barfoo: |
+ #!/bin/bash
+ getent passwd barfoo
+ user_cloudy: |
+ #!/bin/bash
+ getent passwd cloudy
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/install_arbitrary_packages.yaml b/tests/cloud_tests/testcases/examples/install_arbitrary_packages.yaml
new file mode 100644
index 00000000..d3980228
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/install_arbitrary_packages.yaml
@@ -0,0 +1,20 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ packages:
+ - htop
+ - tree
+collect_scripts:
+ htop: |
+ #!/bin/bash
+ dpkg -l | grep htop | wc -l
+ tree: |
+ #!/bin/bash
+ dpkg -l | grep tree | wc -l
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/install_run_chef_recipes.yaml b/tests/cloud_tests/testcases/examples/install_run_chef_recipes.yaml
new file mode 100644
index 00000000..0bec305e
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/install_run_chef_recipes.yaml
@@ -0,0 +1,103 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2017-03-31: Disabled as depends on third party apt repository
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ # Key from https://packages.chef.io/chef.asc
+ apt:
+ source1:
+ source: "deb http://packages.chef.io/repos/apt/stable $RELEASE main"
+ key: |
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
+ Version: GnuPG v1.4.12 (Darwin)
+ Comment: GPGTools - http://gpgtools.org
+
+ mQGiBEppC7QRBADfsOkZU6KZK+YmKw4wev5mjKJEkVGlus+NxW8wItX5sGa6kdUu
+ twAyj7Yr92rF+ICFEP3gGU6+lGo0Nve7KxkN/1W7/m3G4zuk+ccIKmjp8KS3qn99
+ dxy64vcji9jIllVa+XXOGIp0G8GEaj7mbkixL/bMeGfdMlv8Gf2XPpp9vwCgn/GC
+ JKacfnw7MpLKUHOYSlb//JsEAJqao3ViNfav83jJKEkD8cf59Y8xKia5OpZqTK5W
+ ShVnNWS3U5IVQk10ZDH97Qn/YrK387H4CyhLE9mxPXs/ul18ioiaars/q2MEKU2I
+ XKfV21eMLO9LYd6Ny/Kqj8o5WQK2J6+NAhSwvthZcIEphcFignIuobP+B5wNFQpe
+ DbKfA/0WvN2OwFeWRcmmd3Hz7nHTpcnSF+4QX6yHRF/5BgxkG6IqBIACQbzPn6Hm
+ sMtm/SVf11izmDqSsQptCrOZILfLX/mE+YOl+CwWSHhl+YsFts1WOuh1EhQD26aO
+ Z84HuHV5HFRWjDLw9LriltBVQcXbpfSrRP5bdr7Wh8vhqJTPjrQnT3BzY29kZSBQ
+ YWNrYWdlcyA8cGFja2FnZXNAb3BzY29kZS5jb20+iGAEExECACAFAkppC7QCGwMG
+ CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRApQKupg++Caj8sAKCOXmdG36gWji/K
+ +o+XtBfvdMnFYQCfTCEWxRy2BnzLoBBFCjDSK6sJqCu0IENIRUYgUGFja2FnZXMg
+ PHBhY2thZ2VzQGNoZWYuaW8+iGIEExECACIFAlQwYFECGwMGCwkIBwMCBhUIAgkK
+ CwQWAgMBAh4BAheAAAoJEClAq6mD74JqX94An26z99XOHWpLN8ahzm7cp13t4Xid
+ AJ9wVcgoUBzvgg91lKfv/34cmemZn7kCDQRKaQu0EAgAg7ZLCVGVTmLqBM6njZEd
+ Zbv+mZbvwLBSomdiqddE6u3eH0X3GuwaQfQWHUVG2yedyDMiG+EMtCdEeeRebTCz
+ SNXQ8Xvi22hRPoEsBSwWLZI8/XNg0n0f1+GEr+mOKO0BxDB2DG7DA0nnEISxwFkK
+ OFJFebR3fRsrWjj0KjDxkhse2ddU/jVz1BY7Nf8toZmwpBmdozETMOTx3LJy1HZ/
+ Te9FJXJMUaB2lRyluv15MVWCKQJro4MQG/7QGcIfrIZNfAGJ32DDSjV7/YO+IpRY
+ IL4CUBQ65suY4gYUG4jhRH6u7H1p99sdwsg5OIpBe/v2Vbc/tbwAB+eJJAp89Zeu
+ twADBQf/ZcGoPhTGFuzbkcNRSIz+boaeWPoSxK2DyfScyCAuG41CY9+g0HIw9Sq8
+ DuxQvJ+vrEJjNvNE3EAEdKl/zkXMZDb1EXjGwDi845TxEMhhD1dDw2qpHqnJ2mtE
+ WpZ7juGwA3sGhi6FapO04tIGacCfNNHmlRGipyq5ZiKIRq9mLEndlECr8cwaKgkS
+ 0wWu+xmMZe7N5/t/TK19HXNh4tVacv0F3fYK54GUjt2FjCQV75USnmNY4KPTYLXA
+ dzC364hEMlXpN21siIFgB04w+TXn5UF3B4FfAy5hevvr4DtV4MvMiGLu0oWjpaLC
+ MpmrR3Ny2wkmO0h+vgri9uIP06ODWIhJBBgRAgAJBQJKaQu0AhsMAAoJEClAq6mD
+ 74Jq4hIAoJ5KrYS8kCwj26SAGzglwggpvt3CAJ0bekyky56vNqoegB+y4PQVDv4K
+ zA==
+ =IxPr
+ -----END PGP PUBLIC KEY BLOCK-----
+
+ chef:
+
+ # Valid values are 'gems' and 'packages' and 'omnibus'
+ install_type: "packages"
+
+ # Boolean: run 'install_type' code even if chef-client
+ # appears already installed.
+ force_install: false
+
+ # Chef settings
+ server_url: "https://chef.yourorg.com:4000"
+
+ # Node Name
+ # Defaults to the instance-id if not present
+ node_name: "your-node-name"
+
+ # Environment
+ # Defaults to '_default' if not present
+ environment: "production"
+
+ # Default validation name is chef-validator
+ validation_name: "yourorg-validator"
+ # if validation_cert's value is "system" then it is expected
+ # that the file already exists on the system.
+ validation_cert: |
+ -----BEGIN RSA PRIVATE KEY-----
+ YOUR-ORGS-VALIDATION-KEY-HERE
+ -----END RSA PRIVATE KEY-----
+
+ # A run list for a first boot json
+ run_list:
+ - "recipe[apache2]"
+ - "role[db]"
+
+ # Specify a list of initial attributes used by the cookbooks
+ initial_attributes:
+ apache:
+ prefork:
+ maxclients: 100
+ keepalive: "off"
+
+ # if install_type is 'omnibus', change the url to download
+ omnibus_url: "https://www.opscode.com/chef/install.sh"
+
+
+ # Capture all subprocess output into a logfile
+ # Useful for troubleshooting cloud-init issues
+ output: {all: '| tee -a /var/log/cloud-init-output.log'}
+
+collect_scripts:
+ chef_installed: |
+ #!/bin/sh
+ dpkg-query -W -f '${Status}\n' chef
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/run_apt_upgrade.yaml b/tests/cloud_tests/testcases/examples/run_apt_upgrade.yaml
new file mode 100644
index 00000000..2b7eae4c
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/run_apt_upgrade.yaml
@@ -0,0 +1,11 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ package_upgrade: true
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/run_commands.yaml b/tests/cloud_tests/testcases/examples/run_commands.yaml
new file mode 100644
index 00000000..b0e311ba
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/run_commands.yaml
@@ -0,0 +1,16 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ runcmd:
+ - echo cloud-init run cmd test > /tmp/run_cmd
+collect_scripts:
+ run_cmd: |
+ #!/bin/bash
+ cat /tmp/run_cmd
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/run_commands_first_boot.yaml b/tests/cloud_tests/testcases/examples/run_commands_first_boot.yaml
new file mode 100644
index 00000000..7bd803db
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/run_commands_first_boot.yaml
@@ -0,0 +1,16 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ bootcmd:
+ - echo 192.168.1.130 us.archive.ubuntu.com > /etc/hosts
+collect_scripts:
+ hosts: |
+ #!/bin/bash
+ cat /etc/hosts
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/setup_run_puppet.yaml b/tests/cloud_tests/testcases/examples/setup_run_puppet.yaml
new file mode 100644
index 00000000..e366c042
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/setup_run_puppet.yaml
@@ -0,0 +1,55 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as test suite fails this long running test currently
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ puppet:
+ # Every key present in the conf object will be added to puppet.conf:
+ # [name]
+ # subkey=value
+ #
+ # For example the configuration below will have the following section
+ # added to puppet.conf:
+ # [puppetd]
+ # server=puppetmaster.example.org
+ # certname=i-0123456.ip-X-Y-Z.cloud.internal
+ #
+ # The puppmaster ca certificate will be available in
+ # /var/lib/puppet/ssl/certs/ca.pem
+ conf:
+ agent:
+ server: "puppetmaster.example.org"
+ # certname supports substitutions at runtime:
+ # %i: instanceid
+ # Example: i-0123456
+ # %f: fqdn of the machine
+ # Example: ip-X-Y-Z.cloud.internal
+ #
+ # NB: the certname will automatically be lowercased as required by puppet
+ certname: "%i.%f"
+ # ca_cert is a special case. It won't be added to puppet.conf.
+ # It holds the puppetmaster certificate in pem format.
+ # It should be a multi-line string (using the | yaml notation for
+ # multi-line strings).
+ # The puppetmaster certificate is located in
+ # /var/lib/puppet/ssl/ca/ca_crt.pem on the puppetmaster host.
+ #
+ ca_cert: |
+ -----BEGIN CERTIFICATE-----
+ MIICCTCCAXKgAwIBAgIBATANBgkqhkiG9w0BAQUFADANMQswCQYDVQQDDAJjYTAe
+ Fw0xMDAyMTUxNzI5MjFaFw0xNTAyMTQxNzI5MjFaMA0xCzAJBgNVBAMMAmNhMIGf
+ MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu7Q40sm47/E1Pf+r8AYb/V/FWGPgc
+ b014OmNoX7dgCxTDvps/h8Vw555PdAFsW5+QhsGr31IJNI3kSYprFQcYf7A8tNWu
+ 1MASW2CfaEiOEi9F1R3R4Qlz4ix+iNoHiUDTjazw/tZwEdxaQXQVLwgTGRwVa+aA
+ qbutJKi93MILLwIDAQABo3kwdzA4BglghkgBhvhCAQ0EKxYpUHVwcGV0IFJ1Ynkv
+ T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwDwYDVR0TAQH/BAUwAwEB/zAd
+ BgNVHQ4EFgQUu4+jHB+GYE5Vxo+ol1OAhevspjAwCwYDVR0PBAQDAgEGMA0GCSqG
+ SIb3DQEBBQUAA4GBAH/rxlUIjwNb3n7TXJcDJ6MMHUlwjr03BDJXKb34Ulndkpaf
+ +GAlzPXWa7bO908M9I8RnPfvtKnteLbvgTK+h+zX1XCty+S2EQWk29i2AdoqOTxb
+ hppiGMp0tT5Havu4aceCXiy2crVcudj3NFciy8X66SoECemW9UYDCb9T5D0d
+ -----END CERTIFICATE-----
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/examples/writing_out_arbitrary_files.yaml b/tests/cloud_tests/testcases/examples/writing_out_arbitrary_files.yaml
new file mode 100644
index 00000000..6f78f994
--- /dev/null
+++ b/tests/cloud_tests/testcases/examples/writing_out_arbitrary_files.yaml
@@ -0,0 +1,45 @@
+#
+# From cloud config examples on cloudinit.readthedocs.io
+#
+# 2016-11-17: Disabled as covered by module based tests
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ write_files:
+ - encoding: b64
+ content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4
+ owner: root:root
+ path: /root/file_b64
+ permissions: '0644'
+ - content: |
+ # My new /root/file_text
+
+ SMBDOPTIONS="-D"
+ path: /root/file_text
+ - content: !!binary |
+ f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAAAAAAAAAEAAOAAI
+ AEAAHgAdAAYAAAAFAAAAQAAAAAAAAABAAEAAAAAAAEAAQAAAAAAAwAEAAAAAAADAAQAAAAAAAAgA
+ AAAAAAAAAwAAAAQAAAAAAgAAAAAAAAACQAAAAAAAAAJAAAAAAAAcAAAAAAAAABwAAAAAAAAAAQAA
+ path: /root/file_binary
+ permissions: '0555'
+ - encoding: gzip
+ content: !!binary |
+ H4sIAIDb/U8C/1NW1E/KzNMvzuBKTc7IV8hIzcnJVyjPL8pJ4QIA6N+MVxsAAAA=
+ path: /root/file_gzip
+ permissions: '0755'
+collect_scripts:
+ file_b64: |
+ #!/bin/bash
+ file /root/file_b64
+ file_text: |
+ #!/bin/bash
+ file /root/file_text
+ file_binary: |
+ #!/bin/bash
+ file /root/file_binary
+ file_gzip: |
+ #!/bin/bash
+ file /root/file_gzip
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/main/README.md b/tests/cloud_tests/testcases/main/README.md
new file mode 100644
index 00000000..60346063
--- /dev/null
+++ b/tests/cloud_tests/testcases/main/README.md
@@ -0,0 +1,11 @@
+# Main Functionality Test Configs
+
+## purpose
+Test main features and config options of cloud-init such as logging, output
+redirection, early init and integration with init system
+
+## structure
+Should have one or more test configs for all main cloud-init output and logging
+options, and basic functionality test cases
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/main/command_output_simple.yaml b/tests/cloud_tests/testcases/main/command_output_simple.yaml
new file mode 100644
index 00000000..08ca8940
--- /dev/null
+++ b/tests/cloud_tests/testcases/main/command_output_simple.yaml
@@ -0,0 +1,13 @@
+#
+# Test functionality of simple output redirection
+#
+cloud_config: |
+ #cloud-config
+ output: { all: "| tee -a /var/log/cloud-init-test-output" }
+ final_message: "should be last line in cloud-init-test-output file"
+collect_scripts:
+ cloud-init-test-output: |
+ #!/bin/bash
+ cat /var/log/cloud-init-test-output
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/README.md b/tests/cloud_tests/testcases/modules/README.md
new file mode 100644
index 00000000..d66101f2
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/README.md
@@ -0,0 +1,12 @@
+# Module Test Configs
+
+## Purpose
+Test functionality of cloud config modules. See
+[here](https://cloudinit.readthedocs.io/en/latest/topics/modules.html) for
+a full list.
+
+## Structure
+Should have one or more test configs for each module in cloudinit/config/. The
+name of the test should indicate which module the config is verifying.
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/TODO.md b/tests/cloud_tests/testcases/modules/TODO.md
new file mode 100644
index 00000000..0b933b3b
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/TODO.md
@@ -0,0 +1,98 @@
+# TODO
+
+The following lists complete or partially misisng modules. If a module is
+listed with nothing below it indicates that no work is completed on that
+module. If there is a list below the module name that is the remainig
+identified work.
+
+## apt_configure
+
+ * apt_get_wrapper
+ * What does this do? How to use it?
+ * apt_get_command
+ * To specify a different 'apt-get' command, set 'apt_get_command'.
+ This must be a list, and the subcommand (update, upgrade) is appended to it.
+ * Modify default and verify the options got passed correctly.
+ * preserve sources
+ * TBD
+
+## chef
+2016-11-17: Tests took > 60 seconds and test framework times out currently.
+
+## disable EC2 metadata
+
+## disk setup
+
+## emit upstart
+
+## fan
+
+## growpart
+
+## grub dpkg
+
+## landscape
+2016-11-17: Module is not working
+
+## lxd
+2016-11-17: Need a zfs backed test written
+
+## mcollective
+
+## migrator
+
+## mounts
+
+## phone home
+
+## power state change
+
+## puppet
+2016-11-17: Tests took > 60 seconds and test framework times out currently.
+
+## resizefs
+
+## resolv conf
+2016-11-17: Issues with changing resolv.conf and lxc backend.
+
+## redhat subscription
+2016-11-17: Need RH support in test framework.
+
+## rightscale userdata
+2016-11-17: Specific to RightScale cloud enviornment.
+
+## rsyslog
+
+## scripts per boot
+Not applicable to write a test for this as it specifies when something should be run.
+
+## scripts per instance
+Not applicable to write a test for this as it specifies when something should be run.
+
+## scripts per once
+Not applicable to write a test for this as it specifies when something should be run.
+
+## scripts user
+Not applicable to write a test for this as it specifies when something should be run.
+
+## scripts vendor
+Not applicable to write a test for this as it specifies when something should be run.
+
+## snappy
+2016-11-17: Need test to install snaps from store
+
+## snap-config
+2016-11-17: Need to investigate
+
+## spacewalk
+
+## ssh authkey fingerprints
+The authkey_hash key does not appear to work. In fact the default claims to be md5, however syslog only shows sha256
+
+## update etc hosts
+2016-11-17: Issues with changing /etc/hosts and lxc backend.
+
+## yum add repo
+2016-11-17: Need RH support in test framework.
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_conf.yaml b/tests/cloud_tests/testcases/modules/apt_configure_conf.yaml
new file mode 100644
index 00000000..de453000
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_conf.yaml
@@ -0,0 +1,21 @@
+#
+# Provide a configuration for APT
+#
+required_features:
+ - apt
+cloud_config: |
+ #cloud-config
+ apt:
+ conf: |
+ APT {
+ Get {
+ Assume-Yes "true";
+ Fix-Broken "true";
+ }
+ }
+collect_scripts:
+ 94cloud-init-config: |
+ #!/bin/bash
+ cat /etc/apt/apt.conf.d/94cloud-init-config
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_disable_suites.yaml b/tests/cloud_tests/testcases/modules/apt_configure_disable_suites.yaml
new file mode 100644
index 00000000..98800673
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_disable_suites.yaml
@@ -0,0 +1,20 @@
+#
+# Disables everything in sources.list
+#
+required_features:
+ - apt
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ apt:
+ disable_suites:
+ - $RELEASE
+ - $RELEASE-updates
+ - $RELEASE-backports
+ - $RELEASE-security
+collect_scripts:
+ sources.list: |
+ #!/bin/bash
+ grep -v '^#' /etc/apt/sources.list | sed '/^\s*$/d'
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_primary.yaml b/tests/cloud_tests/testcases/modules/apt_configure_primary.yaml
new file mode 100644
index 00000000..41bcf2fd
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_primary.yaml
@@ -0,0 +1,26 @@
+#
+# Setup a custome primary sources.list
+#
+required_features:
+ - apt
+ - apt_src_cont
+cloud_config: |
+ #cloud-config
+ apt:
+ primary:
+ - arches:
+ - default
+ uri: "http://www.gtlib.gatech.edu/pub/ubuntu-releases/"
+collect_scripts:
+ ubuntu.sources.list: |
+ #!/bin/bash
+ grep -v '^#' /etc/apt/sources.list | sed '/^\s*$/d' | grep -c archive.ubuntu.com
+ gatech.sources.list: |
+ #!/bin/bash
+ grep -v '^#' /etc/apt/sources.list | sed '/^\s*$/d' | grep -c gtlib.gatech.edu
+
+ sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_proxy.yaml b/tests/cloud_tests/testcases/modules/apt_configure_proxy.yaml
new file mode 100644
index 00000000..be6c6f81
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_proxy.yaml
@@ -0,0 +1,18 @@
+#
+# Set apt proxy
+#
+required_features:
+ - apt
+cloud_config: |
+ #cloud-config
+ apt:
+ proxy: "http://squid.internal:3128"
+ http_proxy: "http://squid.internal:3128"
+ ftp_proxy: "ftp://squid.internal:3128"
+ https_proxy: "https://squid.internal:3128"
+collect_scripts:
+ 90cloud-init-aptproxy: |
+ #!/bin/bash
+ cat /etc/apt/apt.conf.d/90cloud-init-aptproxy
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_security.yaml b/tests/cloud_tests/testcases/modules/apt_configure_security.yaml
new file mode 100644
index 00000000..83dd51df
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_security.yaml
@@ -0,0 +1,18 @@
+#
+# Add security to sources.list
+#
+required_features:
+ - apt
+ - ubuntu_repos
+cloud_config: |
+ #cloud-config
+ apt:
+ security:
+ - arches:
+ - default
+collect_scripts:
+ sources.list: |
+ #!/bin/bash
+ grep -c security.ubuntu.com /etc/apt/sources.list
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_sources_key.yaml b/tests/cloud_tests/testcases/modules/apt_configure_sources_key.yaml
new file mode 100644
index 00000000..bde9398a
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_sources_key.yaml
@@ -0,0 +1,50 @@
+#
+# Add a sources.list entry with a given key (Debian Jessie)
+#
+required_features:
+ - apt
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ apt:
+ sources:
+ source1:
+ source: "deb http://ppa.launchpad.net/cloud-init-dev/test-archive/ubuntu $RELEASE main"
+ key: |
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
+ Version: SKS 1.1.6
+ Comment: Hostname: keyserver.ubuntu.com
+
+ mQINBFbZRUIBEAC+A0PIKYBP9kLC4hQtRrffRS11uLo8/BdtmOdrlW0hpPHzCfKnjR3tvSEI
+ lqPHG1QrrjAXKZDnZMRz+h/px7lUztvytGzHPSJd5ARUzAyjyRezUhoJ3VSCxrPqx62avuWf
+ RfoJaIeHfDehL5/dTVkyiWxfVZ369ZX6JN2AgLsQTeybTQ75+2z0xPrrhnGmgh6g0qTYcAaq
+ M5ONOGiqeSBX/Smjh6ALy5XkhUiFGLsI7Yluf6XSICY/x7gd6RAfgSIQrUTNMoS1sqhT4aot
+ +xvOfQy8ySkfAK4NddXql6E/+ZqTmBY/Lr0YklFBy8jGT+UysfiIznPMIwbmgq5Li7BtDDtX
+ b8Uyi4edPpjtextezfXYn4NVIpPL5dPZS/FXh4HpzyH0pYCfrH4QDGA7i52AGmhpiOFjJMo6
+ N33sdjZHOH/2Vyp+QZaQnsdUAi1N4M6c33tQbpIScn1SY+El8z5JDA4PBzkw8HpLCi1gGoa6
+ V4kfbWqXXbGAJFkLkP/vc4+pY9axOlmCkJg7xCPwhI75y1cONgovhz+BEXOzolh5KZuGbGbj
+ xe0wva5DLBeIg7EQFf+99pOS7Syby3Xpm6ZbswEFV0cllK4jf/QMjtfInxobuMoI0GV0bE5l
+ WlRtPCK5FnbHwxi0wPNzB/5fwzJ77r6HgPrR0OkT0lWmbUyoOQARAQABtC1MYXVuY2hwYWQg
+ UFBBIGZvciBjbG91ZCBpbml0IGRldmVsb3BtZW50IHRlYW2JAjgEEwECACIFAlbZRUICGwMG
+ CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEAg9Bvvk0wTfHfcP/REK5N2s1JYc69qEa9ZN
+ o6oi+A7l6AYw+ZY88O5TJe7F9otv5VXCIKSUT0Vsepjgf0mtXAgf/sb2lsJn/jp7tzgov3YH
+ vSrkTkRydz8xcA87gwQKePuvTLxQpftF4flrBxgSueIn5O/tPrBOxLz7EVYBc78SKg9aj9L2
+ yUp+YuNevlwfZCTYeBb9r3FHaab2HcgkwqYch66+nKYfwiLuQ9NzXXm0Wn0JcEQ6pWvJscbj
+ C9BdawWovfvMK5/YLfI6Btm7F4mIpQBdhSOUp/YXKmdvHpmwxMCN2QhqYK49SM7qE9aUDbJL
+ arppSEBtlCLWhRBZYLTUna+BkuQ1bHz4St++XTR49Qd7vDERALpApDjB2dxPfMiBzCMwQQyq
+ uy13exU8o2ETLg+dZSLfDTzrBNsBFmXlw8WW17nTISYdKeGKL+QdlUjpzdwUMMzHhAO8SmMH
+ zjeSlDSRMXBJFAFSbCl7EwmMKa3yVX0zInT91fNllZ3iatAmtVdqVH/BFQfTIMH2ET7A8WzJ
+ ZzVSuMRhqoKdr5AMcHuJGPUoVkVJHQA+NNvEiXSysF3faL7jmKapmUwrhpYYX2H8pf+VMu2e
+ cLflKTI28dl+ZQ4Pl/aVsxrti/pzhdYy05Sn5ddtySyIkvo8L1cU5MWpbvSlFPkTstBUDLBf
+ pb0uBy+g0oxJQg15
+ =uy53
+ -----END PGP PUBLIC KEY BLOCK-----
+collect_scripts:
+ sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list.d/source1.list
+ apt_key_list: |
+ #!/bin/bash
+ apt-key finger
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_sources_keyserver.yaml b/tests/cloud_tests/testcases/modules/apt_configure_sources_keyserver.yaml
new file mode 100644
index 00000000..25088135
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_sources_keyserver.yaml
@@ -0,0 +1,23 @@
+#
+# Add a sources.list entry with a key from a keyserver
+#
+required_features:
+ - apt
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ apt:
+ sources:
+ source1:
+ keyid: 1FF0D8535EF7E719E5C81B9C083D06FBE4D304DF
+ keyserver: keyserver.ubuntu.com
+ source: "deb http://ppa.launchpad.net/cloud-init-dev/test-archive/ubuntu $RELEASE main"
+collect_scripts:
+ sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list.d/source1.list
+ apt_key_list: |
+ #!/bin/bash
+ apt-key finger
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_sources_list.yaml b/tests/cloud_tests/testcases/modules/apt_configure_sources_list.yaml
new file mode 100644
index 00000000..143cb080
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_sources_list.yaml
@@ -0,0 +1,22 @@
+#
+# Generate a sources.list
+#
+required_features:
+ - apt
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ apt:
+ sources_list: |
+ deb $MIRROR $RELEASE main restricted
+ deb-src $MIRROR $RELEASE main restricted
+ deb $PRIMARY $RELEASE universe restricted
+ deb-src $PRIMARY $RELEASE universe restricted
+ deb $SECURITY $RELEASE-security multiverse
+ deb-src $SECURITY $RELEASE-security multiverse
+collect_scripts:
+ sources.list: |
+ #/bin/bash
+ cat /etc/apt/sources.list
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_configure_sources_ppa.yaml b/tests/cloud_tests/testcases/modules/apt_configure_sources_ppa.yaml
new file mode 100644
index 00000000..9efdae52
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_configure_sources_ppa.yaml
@@ -0,0 +1,29 @@
+#
+# Add a PPA to source.list
+#
+# NOTE: on older ubuntu releases the sources file added is named
+# 'curtin-dev-test-archive-trusty', without 'ubuntu' in the middle
+required_features:
+ - apt
+ - ppa
+ - ppa_file_name
+cloud_config: |
+ #cloud-config
+ apt:
+ sources:
+ source1:
+ keyid: 0165013E
+ keyserver: keyserver.ubuntu.com
+ source: "ppa:curtin-dev/test-archive"
+collect_scripts:
+ sources.list: |
+ #!/bin/bash
+ cat /etc/apt/sources.list.d/curtin-dev-ubuntu-test-archive-*.list
+ apt-key: |
+ #!/bin/bash
+ apt-key finger
+ sources_full: |
+ #!/bin/bash
+ cat /etc/apt/sources.list
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_pipelining_disable.yaml b/tests/cloud_tests/testcases/modules/apt_pipelining_disable.yaml
new file mode 100644
index 00000000..bd9b5d08
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_pipelining_disable.yaml
@@ -0,0 +1,15 @@
+#
+# Disable apt pipelining value
+#
+required_features:
+ - apt
+cloud_config: |
+ #cloud-config
+ apt:
+ apt_pipelining: false
+collect_scripts:
+ 90cloud-init-pipelining: |
+ #!/bin/bash
+ cat /etc/apt/apt.conf.d/90cloud-init-pipelining
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/apt_pipelining_os.yaml b/tests/cloud_tests/testcases/modules/apt_pipelining_os.yaml
new file mode 100644
index 00000000..cbed3ba3
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/apt_pipelining_os.yaml
@@ -0,0 +1,15 @@
+#
+# Set apt pipelining value to OS
+#
+required_features:
+ - apt
+cloud_config: |
+ #cloud-config
+ apt:
+ apt_pipelining: os
+collect_scripts:
+ 90cloud-init-pipelining: |
+ #!/bin/bash
+ cat /etc/apt/apt.conf.d/90cloud-init-pipelining
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/bootcmd.yaml b/tests/cloud_tests/testcases/modules/bootcmd.yaml
new file mode 100644
index 00000000..3a73994e
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/bootcmd.yaml
@@ -0,0 +1,13 @@
+#
+# Early boot command
+#
+cloud_config: |
+ #cloud-config
+ bootcmd:
+ - echo 192.168.1.130 us.archive.ubuntu.com > /etc/hosts
+collect_scripts:
+ hosts: |
+ #!/bin/bash
+ cat /etc/hosts
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/byobu.yaml b/tests/cloud_tests/testcases/modules/byobu.yaml
new file mode 100644
index 00000000..a9aa1f3f
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/byobu.yaml
@@ -0,0 +1,20 @@
+#
+# Install and enable byobu system wide and default user
+#
+required_features:
+ - byobu
+cloud_config: |
+ #cloud-config
+ byobu_by_default: enable
+collect_scripts:
+ byobu_installed: |
+ #!/bin/bash
+ which byobu
+ byobu_profile_enabled: |
+ #!/bin/bash
+ ls /etc/profile.d/Z97-byobu.sh
+ byobu_launch_exists: |
+ #!/bin/bash
+ which /usr/bin/byobu-launch
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ca_certs.yaml b/tests/cloud_tests/testcases/modules/ca_certs.yaml
new file mode 100644
index 00000000..d939f435
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ca_certs.yaml
@@ -0,0 +1,52 @@
+#
+# Remove existing ca_certs and install custom ca-cert
+#
+cloud_config: |
+ #cloud-config
+ ca-certs:
+ remove-defaults: true
+ trusted:
+ - |
+ -----BEGIN CERTIFICATE-----
+ MIIGJzCCBA+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBsjELMAkGA1UEBhMCRlIx
+ DzANBgNVBAgMBkFsc2FjZTETMBEGA1UEBwwKU3RyYXNib3VyZzEYMBYGA1UECgwP
+ d3d3LmZyZWVsYW4ub3JnMRAwDgYDVQQLDAdmcmVlbGFuMS0wKwYDVQQDDCRGcmVl
+ bGFuIFNhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxIjAgBgkqhkiG9w0BCQEW
+ E2NvbnRhY3RAZnJlZWxhbi5vcmcwHhcNMTIwNDI3MTAzMTE4WhcNMjIwNDI1MTAz
+ MTE4WjB+MQswCQYDVQQGEwJGUjEPMA0GA1UECAwGQWxzYWNlMRgwFgYDVQQKDA93
+ d3cuZnJlZWxhbi5vcmcxEDAOBgNVBAsMB2ZyZWVsYW4xDjAMBgNVBAMMBWFsaWNl
+ MSIwIAYJKoZIhvcNAQkBFhNjb250YWN0QGZyZWVsYW4ub3JnMIICIjANBgkqhkiG
+ 9w0BAQEFAAOCAg8AMIICCgKCAgEA3W29+ID6194bH6ejLrIC4hb2Ugo8v6ZC+Mrc
+ k2dNYMNPjcOKABvxxEtBamnSaeU/IY7FC/giN622LEtV/3oDcrua0+yWuVafyxmZ
+ yTKUb4/GUgafRQPf/eiX9urWurtIK7XgNGFNUjYPq4dSJQPPhwCHE/LKAykWnZBX
+ RrX0Dq4XyApNku0IpjIjEXH+8ixE12wH8wt7DEvdO7T3N3CfUbaITl1qBX+Nm2Z6
+ q4Ag/u5rl8NJfXg71ZmXA3XOj7zFvpyapRIZcPmkvZYn7SMCp8dXyXHPdpSiIWL2
+ uB3KiO4JrUYvt2GzLBUThp+lNSZaZ/Q3yOaAAUkOx+1h08285Pi+P8lO+H2Xic4S
+ vMq1xtLg2bNoPC5KnbRfuFPuUD2/3dSiiragJ6uYDLOyWJDivKGt/72OVTEPAL9o
+ 6T2pGZrwbQuiFGrGTMZOvWMSpQtNl+tCCXlT4mWqJDRwuMGrI4DnnGzt3IKqNwS4
+ Qyo9KqjMIPwnXZAmWPm3FOKe4sFwc5fpawKO01JZewDsYTDxVj+cwXwFxbE2yBiF
+ z2FAHwfopwaH35p3C6lkcgP2k/zgAlnBluzACUI+MKJ/G0gv/uAhj1OHJQ3L6kn1
+ SpvQ41/ueBjlunExqQSYD7GtZ1Kg8uOcq2r+WISE3Qc9MpQFFkUVllmgWGwYDuN3
+ Zsez95kCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNT
+ TCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFFlfyRO6G8y5qEFKikl5
+ ajb2fT7XMB8GA1UdIwQYMBaAFCNsLT0+KV14uGw+quK7Lh5sh/JTMA0GCSqGSIb3
+ DQEBBQUAA4ICAQAT5wJFPqervbja5+90iKxi1d0QVtVGB+z6aoAMuWK+qgi0vgvr
+ mu9ot2lvTSCSnRhjeiP0SIdqFMORmBtOCFk/kYDp9M/91b+vS+S9eAlxrNCB5VOf
+ PqxEPp/wv1rBcE4GBO/c6HcFon3F+oBYCsUQbZDKSSZxhDm3mj7pb67FNbZbJIzJ
+ 70HDsRe2O04oiTx+h6g6pW3cOQMgIAvFgKN5Ex727K4230B0NIdGkzuj4KSML0NM
+ slSAcXZ41OoSKNjy44BVEZv0ZdxTDrRM4EwJtNyggFzmtTuV02nkUj1bYYYC5f0L
+ ADr6s0XMyaNk8twlWYlYDZ5uKDpVRVBfiGcq0uJIzIvemhuTrofh8pBQQNkPRDFT
+ Rq1iTo1Ihhl3/Fl1kXk1WR3jTjNb4jHX7lIoXwpwp767HAPKGhjQ9cFbnHMEtkro
+ RlJYdtRq5mccDtwT0GFyoJLLBZdHHMHJz0F9H7FNk2tTQQMhK5MVYwg+LIaee586
+ CQVqfbscp7evlgjLW98H+5zylRHAgoH2G79aHljNKMp9BOuq6SnEglEsiWGVtu2l
+ hnx8SB3sVJZHeer8f/UQQwqbAO+Kdy70NmbSaqaVtp8jOxLiidWkwSyRTsuU6D8i
+ DiH5uEqBXExjrj0FslxcVKdVj5glVcSmkLwZKbEU1OKwleT/iXFhvooWhQ==
+ -----END CERTIFICATE-----
+collect_scripts:
+ cert_count: |
+ #!/bin/bash
+ ls -l /etc/ssl/certs | wc -l
+ cert: |
+ #!/bin/bash
+ md5sum /etc/ssl/certs/ca-certificates.crt
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/debug_disable.yaml b/tests/cloud_tests/testcases/modules/debug_disable.yaml
new file mode 100644
index 00000000..63218b18
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/debug_disable.yaml
@@ -0,0 +1,9 @@
+#
+# Do not run in debug mode
+#
+cloud_config: |
+ #cloud-config
+ debug:
+ verbose: False
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/debug_enable.yaml b/tests/cloud_tests/testcases/modules/debug_enable.yaml
new file mode 100644
index 00000000..d44147db
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/debug_enable.yaml
@@ -0,0 +1,9 @@
+#
+# Run in debug mode
+#
+cloud_config: |
+ #cloud-config
+ debug:
+ verbose: True
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/final_message.yaml b/tests/cloud_tests/testcases/modules/final_message.yaml
new file mode 100644
index 00000000..c9ed6118
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/final_message.yaml
@@ -0,0 +1,13 @@
+#
+# Print a final message with various predefined variables
+#
+cloud_config: |
+ #cloud-config
+ final_message: |
+ This is my final message!
+ $version
+ $timestamp
+ $datasource
+ $uptime
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/keys_to_console.yaml b/tests/cloud_tests/testcases/modules/keys_to_console.yaml
new file mode 100644
index 00000000..5d86e739
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/keys_to_console.yaml
@@ -0,0 +1,15 @@
+#
+# Hide printing of ssh key and fingerprints for specific keys
+#
+required_features:
+ - syslog
+cloud_config: |
+ #cloud-config
+ ssh_fp_console_blacklist: [ssh-dss, ssh-dsa, ecdsa-sha2-nistp256]
+ ssh_key_console_blacklist: [ssh-dss, ssh-dsa, ecdsa-sha2-nistp256]
+collect_scripts:
+ syslog: |
+ #!/bin/bash
+ cat /var/log/syslog
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/landscape.yaml b/tests/cloud_tests/testcases/modules/landscape.yaml
new file mode 100644
index 00000000..ed2c37c4
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/landscape.yaml
@@ -0,0 +1,28 @@
+#
+# Setup landscape client settings
+#
+# 2016-11-17: Disabled due to this not working
+#
+enabled: false
+required_features:
+ - landscape
+cloud_config: |
+ #cloud-conifg
+ landscape:
+ client:
+ log_level: "info"
+ url: "https://landscape.canonical.com/message-system"
+ ping_url: "http://landscape.canonical.com/ping"
+ data_path: "/var/lib/landscape/client"
+ http_proxy: "http://my.proxy.com/foobar"
+ https_proxy: "https://my.proxy.com/foobar"
+ tags: "server,cloud"
+ computer_title: "footitle"
+ registration_key: "fookey"
+ account_name: "fooaccount"
+collect_scripts:
+ client.conf: |
+ #!/bin/bash
+ cat /etc/landscape/client.conf
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/locale.yaml b/tests/cloud_tests/testcases/modules/locale.yaml
new file mode 100644
index 00000000..e01518a1
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/locale.yaml
@@ -0,0 +1,22 @@
+#
+# Set locale to non-default option and verify
+#
+required_features:
+ - engb_locale
+ - locale_gen
+cloud_config: |
+ #cloud-config
+ locale: en_GB.UTF-8
+ locale_configfile: /etc/default/locale
+collect_scripts:
+ locale_default: |
+ #!/bin/bash
+ cat /etc/default/locale
+ locale_a: |
+ #!/bin/bash
+ locale -a
+ locale_gen: |
+ #!/bin/bash
+ cat /etc/locale.gen | grep -v '^#' | uniq
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/lxd_bridge.yaml b/tests/cloud_tests/testcases/modules/lxd_bridge.yaml
new file mode 100644
index 00000000..e6b7e76a
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/lxd_bridge.yaml
@@ -0,0 +1,32 @@
+#
+# LXD configured with directory backend and IPv4 bridge
+#
+required_features:
+ - lxd
+cloud_config: |
+ #cloud-config
+ lxd:
+ init:
+ storage_backend: dir
+ bridge:
+ mode: new
+ name: lxdbr0
+ ipv4_address: 10.100.100.1
+ ipv4_netmask: 24
+ ipv4_dhcp_first: 10.100.100.100
+ ipv4_dhcp_last: 10.100.100.200
+ ipv4_nat: true
+ domain: lxd
+collect_scripts:
+ lxc: |
+ #!/bin/bash
+ which lxc
+ lxd: |
+ #!/bin/bash
+ which lxd
+ lxc-bridge: |
+ #!/bin/bash
+ ip addr show lxdbr0
+ cat /etc/default/lxd-bridge 2>/dev/null | grep -v ^# | sort -u
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/lxd_dir.yaml b/tests/cloud_tests/testcases/modules/lxd_dir.yaml
new file mode 100644
index 00000000..f93a3fa7
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/lxd_dir.yaml
@@ -0,0 +1,19 @@
+#
+# LXD configured with directory backend
+#
+required_features:
+ - lxd
+cloud_config: |
+ #cloud-config
+ lxd:
+ init:
+ storage_backend: dir
+collect_scripts:
+ lxc: |
+ #!/bin/bash
+ which lxc
+ lxd: |
+ #!/bin/bash
+ which lxd
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ntp.yaml b/tests/cloud_tests/testcases/modules/ntp.yaml
new file mode 100644
index 00000000..fbef431b
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ntp.yaml
@@ -0,0 +1,21 @@
+#
+# Emtpy NTP config to setup using defaults
+#
+cloud_config: |
+ #cloud-config
+ ntp:
+ pools: {}
+ servers: {}
+collect_scripts:
+ ntp_installed: |
+ #!/bin/bash
+ ntpd --version > /dev/null 2>&1
+ echo $?
+ ntp_conf_dist_empty: |
+ #!/bin/bash
+ ls /etc/ntp.conf.dist | wc -l
+ ntp_conf_pool_list: |
+ #!/bin/bash
+ grep 'pool.ntp.org' /etc/ntp.conf | grep -v ^#
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ntp_pools.yaml b/tests/cloud_tests/testcases/modules/ntp_pools.yaml
new file mode 100644
index 00000000..3a93faa2
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ntp_pools.yaml
@@ -0,0 +1,31 @@
+#
+# NTP config using specific pools
+#
+# NOTE: lsb_release listed here because with recent cloud-init deb with
+# (LP: 1628337) resolved, cloud-init will attempt to configure archives.
+# this fails without lsb_release as UNAVAILABLE is used for $RELEASE
+required_features:
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ ntp:
+ pools:
+ - 0.cloud-init.mypool
+ - 1.cloud-init.mypool
+ - 172.16.15.14
+collect_scripts:
+ ntp_installed_pools: |
+ #!/bin/bash
+ ntpd --version > /dev/null 2>&1
+ echo $?
+ ntp_conf_dist_pools: |
+ #!/bin/bash
+ ls /etc/ntp.conf.dist | wc -l
+ ntp_conf_pools: |
+ #!/bin/bash
+ grep '^pool' /etc/ntp.conf
+ ntpq_servers: |
+ #!/bin/sh
+ ntpq -p -w
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ntp_servers.yaml b/tests/cloud_tests/testcases/modules/ntp_servers.yaml
new file mode 100644
index 00000000..d59d45a8
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ntp_servers.yaml
@@ -0,0 +1,27 @@
+#
+# NTP config using specific servers
+#
+required_features:
+ - lsb_release
+cloud_config: |
+ #cloud-config
+ ntp:
+ servers:
+ - 172.16.15.14
+ - 172.16.17.18
+collect_scripts:
+ ntp_installed_servers: |
+ #!/bin/sh
+ ntpd --version > /dev/null 2>&1
+ echo $?
+ ntp_conf_dist_servers: |
+ #!/bin/sh
+ cat /etc/ntp.conf.dist | wc -l
+ ntp_conf_servers: |
+ #!/bin/sh
+ grep '^server' /etc/ntp.conf
+ ntpq_servers: |
+ #!/bin/sh
+ ntpq -p -w
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/package_update_upgrade_install.yaml b/tests/cloud_tests/testcases/modules/package_update_upgrade_install.yaml
new file mode 100644
index 00000000..71d24b83
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/package_update_upgrade_install.yaml
@@ -0,0 +1,33 @@
+#
+# Update/upgrade via apt and then install a pair of packages
+#
+# NOTE: this should not require apt feature, use 'which' rather than 'dpkg -l'
+# NOTE: the testcase for this looks for the command in history.log as
+# /usr/bin/apt-get..., which is not how it always appears. it should
+# instead look for just apt-get...
+# NOTE: this testcase should not require 'apt_up_out', and should look for a
+# call to 'apt-get upgrade' or 'apt-get dist-upgrade' in cloud-init.log
+# rather than 'Calculating upgrade...' in output
+required_features:
+ - apt
+ - apt_hist_fmt
+ - apt_up_out
+cloud_config: |
+ #cloud-config
+ packages:
+ - htop
+ - tree
+ package_update: true
+ package_upgrade: true
+collect_scripts:
+ apt_history_cmdline: |
+ #!/bin/bash
+ grep ^Commandline: /var/log/apt/history.log
+ dpkg_htop: |
+ #!/bin/bash
+ dpkg -l | grep htop | wc -l
+ dpkg_tree: |
+ #!/bin/bash
+ dpkg -l | grep tree | wc -l
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/runcmd.yaml b/tests/cloud_tests/testcases/modules/runcmd.yaml
new file mode 100644
index 00000000..04e5a050
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/runcmd.yaml
@@ -0,0 +1,13 @@
+#
+# Run a simple command
+#
+cloud_config: |
+ #cloud-config
+ runcmd:
+ - echo cloud-init run cmd test > /tmp/run_cmd
+collect_scripts:
+ run_cmd: |
+ #!/bin/bash
+ cat /tmp/run_cmd
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/salt_minion.yaml b/tests/cloud_tests/testcases/modules/salt_minion.yaml
new file mode 100644
index 00000000..f20d24f0
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/salt_minion.yaml
@@ -0,0 +1,34 @@
+#
+# Create config for a salt minion
+#
+# 2016-11-17: Currently takes >60 seconds results in test failure
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ salt_minion:
+ conf:
+ master: salt.mydomain.com
+ public_key: |
+ ------BEGIN PUBLIC KEY-------
+ <key data>
+ ------END PUBLIC KEY-------
+ private_key: |
+ ------BEGIN PRIVATE KEY------
+ <key data>
+ ------END PRIVATE KEY-------
+collect_scripts:
+ minion: |
+ #!/bin/bash
+ cat /etc/salt/minion
+ minion_id: |
+ #!/bin/bash
+ cat /etc/salt/minion_id
+ minion.pem: |
+ #!/bin/bash
+ cat /etc/salt/pki/minion/minion.pem
+ minion.pub: |
+ #!/bin/bash
+ cat /etc/salt/pki/minion/minion.pub
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/seed_random_command.yaml b/tests/cloud_tests/testcases/modules/seed_random_command.yaml
new file mode 100644
index 00000000..6a9157eb
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/seed_random_command.yaml
@@ -0,0 +1,18 @@
+#
+# Use uuid to create a random string
+#
+# 2016-11-15 Disabled as this is not working currently
+#
+enabled: False
+cloud_config: |
+ #cloud-config
+ random_seed:
+ command: ["cat", "/proc/sys/kernel/random/uuid"]
+ command_required: true
+ file: /root/seed
+collect_scripts:
+ seed_data: |
+ #!/bin/bash
+ cat /root/seed
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/seed_random_data.yaml b/tests/cloud_tests/testcases/modules/seed_random_data.yaml
new file mode 100644
index 00000000..a9b2c885
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/seed_random_data.yaml
@@ -0,0 +1,15 @@
+#
+# Push in random raw string to set as seed
+#
+cloud_config: |
+ #cloud-config
+ random_seed:
+ data: 'MYUb34023nD:LFDK10913jk;dfnk:Df'
+ encoding: raw
+ file: /root/seed
+collect_scripts:
+ seed_data: |
+ #!/bin/bash
+ cat /root/seed
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/set_hostname.yaml b/tests/cloud_tests/testcases/modules/set_hostname.yaml
new file mode 100644
index 00000000..c96344cf
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/set_hostname.yaml
@@ -0,0 +1,20 @@
+#
+# Set the hostname and update /etc/hosts
+#
+required_features:
+ - hostname
+cloud_config: |
+ #cloud-config
+ hostname: myhostname
+collect_scripts:
+ hosts: |
+ #!/bin/bash
+ grep ^127 /etc/hosts
+ hostname: |
+ #!/bin/bash
+ hostname
+ fqdn: |
+ #!/bin/bash
+ hostname --fqdn
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/set_hostname_fqdn.yaml b/tests/cloud_tests/testcases/modules/set_hostname_fqdn.yaml
new file mode 100644
index 00000000..daf75931
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/set_hostname_fqdn.yaml
@@ -0,0 +1,22 @@
+#
+# Set the hostname and update /etc/hosts
+#
+required_features:
+ - hostname
+cloud_config: |
+ #cloud-config
+ manage_etc_hosts: true
+ hostname: myhostname
+ fqdn: host.myorg.com
+collect_scripts:
+ hosts: |
+ #!/bin/bash
+ grep ^127 /etc/hosts
+ hostname: |
+ #!/bin/bash
+ hostname
+ fqdn: |
+ #!/bin/bash
+ hostname --fqdn
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/set_password.yaml b/tests/cloud_tests/testcases/modules/set_password.yaml
new file mode 100644
index 00000000..04d7c58a
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/set_password.yaml
@@ -0,0 +1,19 @@
+#
+# Set password of default user
+#
+required_features:
+ - ubuntu_user
+cloud_config: |
+ #cloud-config
+ password: password
+ chpasswd: { expire: False }
+ ssh_pwauth: True
+collect_scripts:
+ shadow: |
+ #!/bin/bash
+ cat /etc/shadow
+ sshd_config: |
+ #!/bin/bash
+ grep '^PasswordAuth' /etc/ssh/sshd_config
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/set_password_expire.yaml b/tests/cloud_tests/testcases/modules/set_password_expire.yaml
new file mode 100644
index 00000000..789604b0
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/set_password_expire.yaml
@@ -0,0 +1,30 @@
+#
+# Expire password for all users
+#
+required_features:
+ - sshd
+cloud_config: |
+ #cloud-config
+ chpasswd: { expire: True }
+ users:
+ - name: tom
+ password: $1$xyz$sPMsLNmf66Ohl.ol6JvzE.
+ lock_passwd: false
+ - name: dick
+ password: $1$xyz$sPMsLNmf66Ohl.ol6JvzE.
+ lock_passwd: false
+ - name: harry
+ password: $1$xyz$sPMsLNmf66Ohl.ol6JvzE.
+ lock_passwd: false
+ - name: jane
+ password: $1$xyz$sPMsLNmf66Ohl.ol6JvzE.
+ lock_passwd: false
+collect_scripts:
+ shadow: |
+ #!/bin/bash
+ cat /etc/shadow
+ sshd_config: |
+ #!/bin/bash
+ grep '^PasswordAuth' /etc/ssh/sshd_config
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/set_password_list.yaml b/tests/cloud_tests/testcases/modules/set_password_list.yaml
new file mode 100644
index 00000000..a2a89c9d
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/set_password_list.yaml
@@ -0,0 +1,40 @@
+#
+# Set password of list of users
+#
+cloud_config: |
+ #cloud-config
+ ssh_pwauth: yes
+ users:
+ - name: tom
+ # md5 gotomgo
+ passwd: "$1$S7$tT1BEDIYrczeryDQJfdPe0"
+ lock_passwd: false
+ - name: dick
+ # md5 gocubsgo
+ passwd: "$1$ssisyfpf$YqvuJLfrrW6Cg/l53Pi1n1"
+ lock_passwd: false
+ - name: harry
+ # sha512 goharrygo
+ passwd: "$6$LF$9Z2p6rWK6TNC1DC6393ec0As.18KRAvKDbfsGJEdWN3sRQRwpdfoh37EQ3yUh69tP4GSrGW5XKHxMLiKowJgm/"
+ lock_passwd: false
+ - name: jane
+ # sha256 gojanego
+ passwd: "$5$iW$XsxmWCdpwIW8Yhv.Jn/R3uk6A4UaicfW5Xp7C9p9pg."
+ lock_passwd: false
+ - name: "mikey"
+ lock_passwd: false
+ chpasswd:
+ list:
+ - tom:mypassword123!
+ - dick:RANDOM
+ - harry:RANDOM
+ - mikey:$5$xZ$B2YGGEx2AOf4PeW48KC6.QyT1W2B4rZ9Qbltudtha89
+collect_scripts:
+ shadow: |
+ #!/bin/bash
+ cat /etc/shadow
+ sshd_config: |
+ #!/bin/bash
+ grep '^PasswordAuth' /etc/ssh/sshd_config
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/set_password_list_string.yaml b/tests/cloud_tests/testcases/modules/set_password_list_string.yaml
new file mode 100644
index 00000000..c2a0f631
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/set_password_list_string.yaml
@@ -0,0 +1,40 @@
+#
+# Set password of list of users as a string
+#
+cloud_config: |
+ #cloud-config
+ ssh_pwauth: yes
+ users:
+ - name: tom
+ # md5 gotomgo
+ passwd: "$1$S7$tT1BEDIYrczeryDQJfdPe0"
+ lock_passwd: false
+ - name: dick
+ # md5 gocubsgo
+ passwd: "$1$ssisyfpf$YqvuJLfrrW6Cg/l53Pi1n1"
+ lock_passwd: false
+ - name: harry
+ # sha512 goharrygo
+ passwd: "$6$LF$9Z2p6rWK6TNC1DC6393ec0As.18KRAvKDbfsGJEdWN3sRQRwpdfoh37EQ3yUh69tP4GSrGW5XKHxMLiKowJgm/"
+ lock_passwd: false
+ - name: jane
+ # sha256 gojanego
+ passwd: "$5$iW$XsxmWCdpwIW8Yhv.Jn/R3uk6A4UaicfW5Xp7C9p9pg."
+ lock_passwd: false
+ - name: "mikey"
+ lock_passwd: false
+ chpasswd:
+ list: |
+ tom:mypassword123!
+ dick:RANDOM
+ harry:RANDOM
+ mikey:$5$xZ$B2YGGEx2AOf4PeW48KC6.QyT1W2B4rZ9Qbltudtha89
+collect_scripts:
+ shadow: |
+ #!/bin/bash
+ cat /etc/shadow
+ sshd_config: |
+ #!/bin/bash
+ grep '^PasswordAuth' /etc/ssh/sshd_config
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/snappy.yaml b/tests/cloud_tests/testcases/modules/snappy.yaml
new file mode 100644
index 00000000..43f93295
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/snappy.yaml
@@ -0,0 +1,15 @@
+#
+# Install snappy
+#
+required_features:
+ - snap
+cloud_config: |
+ #cloud-config
+ snappy:
+ system_snappy: auto
+collect_scripts:
+ snapd: |
+ #!/bin/bash
+ dpkg -s snapd
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_disable.yaml b/tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_disable.yaml
new file mode 100644
index 00000000..746653ec
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_disable.yaml
@@ -0,0 +1,15 @@
+#
+# Disable fingerprint printing
+#
+required_features:
+ - syslog
+cloud_config: |
+ #cloud-config
+ ssh_genkeytypes: []
+ no_ssh_fingerprints: true
+collect_scripts:
+ syslog: |
+ #!/bin/bash
+ cat /var/log/syslog
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_enable.yaml b/tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_enable.yaml
new file mode 100644
index 00000000..9f5dc34a
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ssh_auth_key_fingerprints_enable.yaml
@@ -0,0 +1,21 @@
+#
+# Print auth keys with different hash than md5
+#
+# NOTE: testcase checks for '256 SHA256:.*(ECDSA)' on output line on trusty
+# this fails as line in output reads '256:.*(ECDSA)'
+required_features:
+ - syslog
+ - ssh_key_fmt
+cloud_config: |
+ #cloud-config
+ ssh_genkeytypes:
+ - ecdsa
+ - ed25519
+ ssh_authorized_keys:
+ - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDXW9Gg5H7ehjdSc6qDzwNtgCy94XYHhEYlXZMO2+FJrH3wfHGiMfCwOHxcOMt2QiXItULthdeQWS9QjBSSjVRXf6731igFrqPFyS9qBlOQ5D29C4HBXFnQggGVpBNJ82IRJv7szbbe/vpgLBP4kttUza9Dr4e1YM1ln4PRnjfXea6T0m+m1ixNb5432pTXlqYOnNOxSIm1gHgMLxPuDrJvQERDKrSiKSjIdyC9Jd8t2e1tkNLY0stmckVRbhShmcJvlyofHWbc2Ca1mmtP7MlS1VQnfLkvU1IrFwkmaQmaggX6WR6coRJ6XFXdWcq/AI2K6GjSnl1dnnCxE8VCEXBlXgFzad+PMSG4yiL5j8Oo1ZVpkTdgBnw4okGqTYCXyZg6X00As9IBNQfZMFlQXlIo4FiWgj3CO5QHQOyOX6FuEumaU13GnERrSSdp9tCs1Qm3/DG2RSCQBWTfcgMcStIvKqvJ3IjFn0vGLvI3Ampnq9q1SHwmmzAPSdzcMA76HyMUA5VWaBvWHlUxzIM6unxZASnwvuCzpywSEB5J2OF+p6H+cStJwQ32XwmOG8pLp1srlVWpqZI58Du/lzrkPqONphoZx0LDV86w7RUz1ksDzAdcm0tvmNRFMN1a0frDs506oA3aWK0oDk4Nmvk8sXGTYYw3iQSkOvDUUlIsqdaO+w==
+collect_scripts:
+ syslog: |
+ #!/bin/bash
+ cat /var/log/syslog
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ssh_import_id.yaml b/tests/cloud_tests/testcases/modules/ssh_import_id.yaml
new file mode 100644
index 00000000..b62d3f69
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ssh_import_id.yaml
@@ -0,0 +1,17 @@
+#
+# Import a user's ssh key via gh or lp
+#
+required_features:
+ - ubuntu_user
+ - sudo
+cloud_config: |
+ #cloud-config
+ ssh_import_id:
+ - gh:powersj
+ - lp:smoser
+collect_scripts:
+ auth_keys_ubuntu: |
+ #!/bin/bash
+ cat /home/ubuntu/.ssh/authorized_keys
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ssh_keys_generate.yaml b/tests/cloud_tests/testcases/modules/ssh_keys_generate.yaml
new file mode 100644
index 00000000..659fd939
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ssh_keys_generate.yaml
@@ -0,0 +1,44 @@
+#
+# SSH keys generated using cloud-init
+#
+required_features:
+ - ubuntu_user
+cloud_config: |
+ #cloud-config
+ ssh_genkeytypes:
+ - ecdsa
+ - ed25519
+ authkey_hash: sha512
+collect_scripts:
+ auth_keys_root: |
+ #!/bin/bash
+ cat /root/.ssh/authorized_keys
+ auth_keys_ubuntu: |
+ #!/bin/bash
+ cat /home/ubuntu/ssh/authorized_keys
+ dsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_dsa_key.pub
+ dsa_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_dsa_key
+ rsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_rsa_key.pub
+ rsa_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_rsa_key
+ ecdsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ecdsa_key.pub
+ ecdsa_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ecdsa_key
+ ed25519_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ed25519_key.pub
+ ed25519_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ed25519_key
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/ssh_keys_provided.yaml b/tests/cloud_tests/testcases/modules/ssh_keys_provided.yaml
new file mode 100644
index 00000000..5ceb3623
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/ssh_keys_provided.yaml
@@ -0,0 +1,105 @@
+#
+# SSH keys provided via cloud config
+#
+enabled: False
+required_features:
+ - ubuntu_user
+ - sudo
+cloud_config: |
+ #cloud-config
+ disable_root: false
+ ssh_authorized_keys:
+ - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDXW9Gg5H7ehjdSc6qDzwNtgCy94XYHhEYlXZMO2+FJrH3wfHGiMfCwOHxcOMt2QiXItULthdeQWS9QjBSSjVRXf6731igFrqPFyS9qBlOQ5D29C4HBXFnQggGVpBNJ82IRJv7szbbe/vpgLBP4kttUza9Dr4e1YM1ln4PRnjfXea6T0m+m1ixNb5432pTXlqYOnNOxSIm1gHgMLxPuDrJvQERDKrSiKSjIdyC9Jd8t2e1tkNLY0stmckVRbhShmcJvlyofHWbc2Ca1mmtP7MlS1VQnfLkvU1IrFwkmaQmaggX6WR6coRJ6XFXdWcq/AI2K6GjSnl1dnnCxE8VCEXBlXgFzad+PMSG4yiL5j8Oo1ZVpkTdgBnw4okGqTYCXyZg6X00As9IBNQfZMFlQXlIo4FiWgj3CO5QHQOyOX6FuEumaU13GnERrSSdp9tCs1Qm3/DG2RSCQBWTfcgMcStIvKqvJ3IjFn0vGLvI3Ampnq9q1SHwmmzAPSdzcMA76HyMUA5VWaBvWHlUxzIM6unxZASnwvuCzpywSEB5J2OF+p6H+cStJwQ32XwmOG8pLp1srlVWpqZI58Du/lzrkPqONphoZx0LDV86w7RUz1ksDzAdcm0tvmNRFMN1a0frDs506oA3aWK0oDk4Nmvk8sXGTYYw3iQSkOvDUUlIsqdaO+w==
+ ssh_keys:
+ rsa_private: |
+ -----BEGIN RSA PRIVATE KEY-----
+ MIIEowIBAAKCAQEAtPx6PqN3iSEsnTtibyIEy52Tra8T5fn0ryXyg46Di2NBwdnj
+ o8trNv9jenfV/UhmePl58lXjT43wV8OCMl6KsYXyBdegM35NNtono4I4mLLKFMR9
+ 9TOtDn6iYcaNenVhF3ZCj9Z2nNOlTrdc0uchHqKMrxLjCRCUrL91Uf+xioTF901Y
+ RM+ZqC5lT92yAL76F4qPF+Lq1QtUfNfUIwwvOp5ccDZLPxij0YvyBzubYye9hJHu
+ yjbJv78R4JHV+L2WhzSoX3W/6WrxVzeXqFGqH894ccOaC/7tnqSP6V8lIQ6fE2+c
+ DurJcpM3CJRgkndGHjtU55Y71YkcdLksSMvezQIDAQABAoIBAQCrU4IJP8dNeaj5
+ IpkY6NQvR/jfZqfogYi+MKb1IHin/4rlDfUvPcY9pt8ttLlObjYK+OcWn3Vx/sRw
+ 4DOkqNiUGl80Zp1RgZNohHUXlJMtAbrIlAVEk+mTmg7vjfyp2unRQvLZpMRdywBm
+ lq95OrCghnG03aUsFJUZPpi5ydnwbA12ma+KHkG0EzaVlhA7X9N6z0K6U+zue2gl
+ goMLt/MH0rsYawkHrwiwXaIFQeyV4MJP0vmrZLbFk1bycu9X/xPtTYotWyWo4eKA
+ cb05uu04qwexkKHDM0KXtT0JecbTo2rOefFo8Uuab6uJY+fEHNocZ+v1vLA4aOxJ
+ ovp1JuXlAoGBAOWYNgKrlTfy5n0sKsNk+1RuL2jHJZJ3HMd0EIt7/fFQN3Fi08Hu
+ jtntqD30Wj+DJK8b8Lrt66FruxyEJm5VhVmwkukrLR5ige2f6ftZnoFCmdyy+0zP
+ dnPZSUe2H5ZPHa+qthJgHLn+al2P04tGh+1fGHC2PbP+e0Co+/ZRIOxrAoGBAMnN
+ IEen9/FRsqvnDd36I8XnJGskVRTZNjylxBmbKcuMWm+gNhOI7gsCAcqzD4BYZjjW
+ pLhrt/u9p+l4MOJy6OUUdM/okg12SnJEGryysOcVBcXyrvOfklWnANG4EAH5jt1N
+ ftTb1XTxzvWVuR/WJK0B5MZNYM71cumBdUDtPi+nAoGAYmoIXMSnxb+8xNL10aOr
+ h9ljQQp8NHgSQfyiSufvRk0YNuYh1vMnEIsqnsPrG2Zfhx/25GmvoxXGssaCorDN
+ 5FAn6QK06F1ZTD5L0Y3sv4OI6G1gAuC66ZWuL6sFhyyKkQ4f1WiVZ7SCa3CHQSAO
+ i9VDaKz1bf4bXvAQcNj9v9kCgYACSOZCqW4vN0OUmqsXhkt9ZB6Pb/veno70pNPR
+ jmYsvcwQU3oJQpWfXkhy6RAV3epaXmPDCsUsfns2M3wqNC7a2R5xdCqjKGGzZX4A
+ AO3rz9se4J6Gd5oKijeCKFlWDGNHsibrdgm2pz42nZlY+O21X74dWKbt8O16I1MW
+ hxkbJQKBgAXfuen/srVkJgPuqywUYag90VWCpHsuxdn+fZJa50SyZADr+RbiDfH2
+ vek8Uo8ap8AEsv4Rfs9opUcUZevLp3g2741eOaidHVLm0l4iLIVl03otGOqvSzs+
+ A3tFPEOxauXpzCt8f8eXsz0WQXAgIKW2h8zu5QHjomioU3i27mtE
+ -----END RSA PRIVATE KEY-----
+ rsa_public: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0/Ho+o3eJISydO2JvIgTLnZOtrxPl+fSvJfKDjoOLY0HB2eOjy2s2/2N6d9X9SGZ4+XnyVeNPjfBXw4IyXoqxhfIF16Azfk022iejgjiYssoUxH31M60OfqJhxo16dWEXdkKP1nac06VOt1zS5yEeooyvEuMJEJSsv3VR/7GKhMX3TVhEz5moLmVP3bIAvvoXio8X4urVC1R819QjDC86nlxwNks/GKPRi/IHO5tjJ72Eke7KNsm/vxHgkdX4vZaHNKhfdb/pavFXN5eoUaofz3hxw5oL/u2epI/pXyUhDp8Tb5wO6slykzcIlGCSd0YeO1TnljvViRx0uSxIy97N root@xenial-lxd
+ dsa_private: |
+ -----BEGIN DSA PRIVATE KEY-----
+ MIIBuwIBAAKBgQD5Fstc23IVSDe6k4DNP8smPKuEWUvHDTOGaXrhOVAfzZ6+jklP
+ 55mzvC7jO53PWWC31hq10xBoWdev0WtcNF9Tv+4bAa1263y51Rqo4GI7xx+xic1d
+ mLqqfYijBT9k48J/1tV0cs1Wjs6FP/IJTD/kYVC930JjYQMi722lBnUxsQIVAL7i
+ z3fTGKTvSzvW0wQlwnYpS2QFAoGANp+KdyS9V93HgxGQEN1rlj/TSv/a3EVdCKtE
+ nQf55aPHxDAVDVw5JtRh4pZbbRV4oGRPc9KOdjo5BU28vSM3Lmhkb+UaaDXwHkgI
+ nK193o74DKjADWZxuLyyiKHiMOhxozoxDfjWxs8nz6uqvSW0pr521EwIY6RajbED
+ nZ2a3GkCgYEAyoUomNRB6bmpsIfzt8zdtqLP5umIj2uhr9MVPL8/QdbxmJ72Z7pf
+ Q2z1B7QAdIBGOlqJXtlau7ABhWK29Efe+99ObyTSSdDc6RCDeAwUmBAiPRQhDH2E
+ wExw3doDSCUb28L1B50wBzQ8mC3KXp6C7IkBXWspb16DLHUHFSI8bkICFA5kVUcW
+ nCPOXEQsayANi8+Cb7BH
+ -----END DSA PRIVATE KEY-----
+ dsa_public: ssh-dss AAAAB3NzaC1kc3MAAACBAPkWy1zbchVIN7qTgM0/yyY8q4RZS8cNM4ZpeuE5UB/Nnr6OSU/nmbO8LuM7nc9ZYLfWGrXTEGhZ16/Ra1w0X1O/7hsBrXbrfLnVGqjgYjvHH7GJzV2Yuqp9iKMFP2Tjwn/W1XRyzVaOzoU/8glMP+RhUL3fQmNhAyLvbaUGdTGxAAAAFQC+4s930xik70s71tMEJcJ2KUtkBQAAAIA2n4p3JL1X3ceDEZAQ3WuWP9NK/9rcRV0Iq0SdB/nlo8fEMBUNXDkm1GHillttFXigZE9z0o52OjkFTby9IzcuaGRv5RpoNfAeSAicrX3ejvgMqMANZnG4vLKIoeIw6HGjOjEN+NbGzyfPq6q9JbSmvnbUTAhjpFqNsQOdnZrcaQAAAIEAyoUomNRB6bmpsIfzt8zdtqLP5umIj2uhr9MVPL8/QdbxmJ72Z7pfQ2z1B7QAdIBGOlqJXtlau7ABhWK29Efe+99ObyTSSdDc6RCDeAwUmBAiPRQhDH2EwExw3doDSCUb28L1B50wBzQ8mC3KXp6C7IkBXWspb16DLHUHFSI8bkI= root@xenial-lxd
+ ed25519_private: |
+ -----BEGIN OPENSSH PRIVATE KEY-----
+ b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
+ QyNTUxOQAAACDbnQGUruL42aVVsyHeaV5mYNTOhteXao0Nl5DVThJ2+QAAAJgwt+lcMLfp
+ XAAAAAtzc2gtZWQyNTUxOQAAACDbnQGUruL42aVVsyHeaV5mYNTOhteXao0Nl5DVThJ2+Q
+ AAAEDQlFZpz9q8+/YJHS9+jPAqy2ZT6cGEv8HTB6RZtTjd/dudAZSu4vjZpVWzId5pXmZg
+ 1M6G15dqjQ2XkNVOEnb5AAAAD3Jvb3RAeGVuaWFsLWx4ZAECAwQFBg==
+ -----END OPENSSH PRIVATE KEY-----
+ ed25519_public: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINudAZSu4vjZpVWzId5pXmZg1M6G15dqjQ2XkNVOEnb5 root@xenial-lxd
+ ecdsa_private: |
+ -----BEGIN EC PRIVATE KEY-----
+ MHcCAQEEIDuK+QFc1wmyJY8uDqQVa1qHte30Rk/fdLxGIBkwJAyOoAoGCCqGSM49
+ AwEHoUQDQgAEWxLlO+TL8gL91eET9p/HFQbqR1A691AkJgZk3jY5mpZqxgX4vcgb
+ 7f/CtXuM6s2svcDJqAeXr6Wk8OJJcMxylA==
+ -----END EC PRIVATE KEY-----
+ ecdsa_public: ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFsS5Tvky/IC/dXhE/afxxUG6kdQOvdQJCYGZN42OZqWasYF+L3IG+3/wrV7jOrNrL3AyagHl6+lpPDiSXDMcpQ= root@xenial-lxd
+collect_scripts:
+ auth_keys_root: |
+ #!/bin/bash
+ cat /root/.ssh/authorized_keys
+ auth_keys_ubuntu: |
+ #!/bin/bash
+ cat /home/ubuntu/ssh/authorized_keys
+ dsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_dsa_key.pub
+ dsa_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_dsa_key
+ rsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_rsa_key.pub
+ rsa_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_rsa_key
+ ecdsa_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ecdsa_key.pub
+ ecdsa_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ecdsa_key
+ ed25519_public: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ed25519_key.pub
+ ed25519_private: |
+ #!/bin/bash
+ cat /etc/ssh/ssh_host_ed25519_key
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/timezone.yaml b/tests/cloud_tests/testcases/modules/timezone.yaml
new file mode 100644
index 00000000..5112aa9f
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/timezone.yaml
@@ -0,0 +1,16 @@
+#
+# Set system timezone
+#
+required_features:
+ - daylight_time
+cloud_config: |
+ #cloud-config
+ timezone: US/Aleutian
+collect_scripts:
+ timezone: |
+ #!/bin/bash
+ # date will convert this to system's configured time zone.
+ # use a static date to avoid dealing with daylight savings.
+ date "+%Z" --date="Thu, 03 Nov 2016 00:47:00 -0400"
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/user_groups.yaml b/tests/cloud_tests/testcases/modules/user_groups.yaml
new file mode 100644
index 00000000..71cc9da3
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/user_groups.yaml
@@ -0,0 +1,52 @@
+#
+# Create groups and users with various options
+#
+required_features:
+ - ubuntu_user
+cloud_config: |
+ #cloud-config
+ # Add groups to the system
+ groups:
+ - secret: [foobar,barfoo]
+ - cloud-users
+
+ # Add users to the system. Users are added after groups are added.
+ users:
+ - default
+ - name: foobar
+ gecos: Foo B. Bar
+ primary-group: foobar
+ groups: users
+ expiredate: 2038-01-19
+ lock_passwd: false
+ passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/
+ - name: barfoo
+ gecos: Bar B. Foo
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ groups: cloud-users
+ lock_passwd: true
+ - name: cloudy
+ gecos: Magic Cloud App Daemon User
+ inactive: true
+ system: true
+collect_scripts:
+ group_ubuntu: |
+ #!/bin/bash
+ getent group ubuntu
+ group_cloud_users: |
+ #!/bin/bash
+ getent group cloud-users
+ user_ubuntu: |
+ #!/bin/bash
+ getent passwd ubuntu
+ user_foobar: |
+ #!/bin/bash
+ getent passwd foobar
+ user_barfoo: |
+ #!/bin/bash
+ getent passwd barfoo
+ user_cloudy: |
+ #!/bin/bash
+ getent passwd cloudy
+
+# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/testcases/modules/write_files.yaml b/tests/cloud_tests/testcases/modules/write_files.yaml
new file mode 100644
index 00000000..ce936b7b
--- /dev/null
+++ b/tests/cloud_tests/testcases/modules/write_files.yaml
@@ -0,0 +1,46 @@
+#
+# Write various file types
+#
+# NOTE: on trusty 'file' has an output formatting error for binary files and
+# has 2 spaces in 'LSB executable', which causes a failure here
+required_features:
+ - no_file_fmt_e
+cloud_config: |
+ #cloud-config
+ write_files:
+ - encoding: b64
+ content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4
+ owner: root:root
+ path: /root/file_b64
+ permissions: '0644'
+ - content: |
+ # My new /root/file_text
+
+ SMBDOPTIONS="-D"
+ path: /root/file_text
+ - content: !!binary |
+ f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAAAAAAAAAEAAOAAI
+ AEAAHgAdAAYAAAAFAAAAQAAAAAAAAABAAEAAAAAAAEAAQAAAAAAAwAEAAAAAAADAAQAAAAAAAAgA
+ AAAAAAAAAwAAAAQAAAAAAgAAAAAAAAACQAAAAAAAAAJAAAAAAAAcAAAAAAAAABwAAAAAAAAAAQAA
+ path: /root/file_binary
+ permissions: '0555'
+ - encoding: gzip
+ content: !!binary |
+ H4sIAIDb/U8C/1NW1E/KzNMvzuBKTc7IV8hIzcnJVyjPL8pJ4QIA6N+MVxsAAAA=
+ path: /root/file_gzip
+ permissions: '0755'
+collect_scripts:
+ file_b64: |
+ #!/bin/bash
+ file /root/file_b64
+ file_text: |
+ #!/bin/bash
+ file /root/file_text
+ file_binary: |
+ #!/bin/bash
+ file /root/file_binary
+ file_gzip: |
+ #!/bin/bash
+ file /root/file_gzip
+
+# vi: ts=4 expandtab