From 611fb2bf4c89bfa44ff3c92ce03b849939bafaa9 Mon Sep 17 00:00:00 2001 From: Dmitriy Rabotyagov Date: Wed, 23 Jun 2021 20:17:39 +0300 Subject: [PATCH] Deprecate OpenStack-Ansible nspawn repositories Since nspawn support has been removed with [1] we now start repositories deprecation process. [1] https://review.opendev.org/c/openstack/openstack-ansible/+/782569 Depends-On: https://review.opendev.org/c/openstack/project-config/+/797723 Change-Id: I113f0f2b5befc4bca830c130d7f60e621c86798e --- .gitignore | 69 ----- CONTRIBUTING.rst | 83 ----- LICENSE | 202 ------------ README.rst | 35 +-- Vagrantfile | 62 ---- bindep.txt | 50 --- defaults/main.yml | 233 -------------- doc/Makefile | 195 ------------ doc/requirements.txt | 16 - doc/source/conf.py | 290 ------------------ doc/source/index.rst | 26 -- examples/playbook.yml | 5 - files/lxc-image-fetch-url.py | 121 -------- files/nspawn-attach.sh | 22 -- handlers/main.yml | 54 ---- manual-test.rc | 33 -- meta/main.yml | 37 --- meta/openstack-ansible.yml | 20 -- releasenotes/notes/.placeholder | 0 releasenotes/source/_static/.placeholder | 0 releasenotes/source/_templates/.placeholder | 0 releasenotes/source/conf.py | 276 ----------------- releasenotes/source/index.rst | 12 - releasenotes/source/rocky.rst | 6 - releasenotes/source/stein.rst | 6 - releasenotes/source/train.rst | 6 - releasenotes/source/unreleased.rst | 5 - releasenotes/source/ussuri.rst | 6 - run_tests.sh | 94 ------ setup.cfg | 13 - setup.py | 20 -- tasks/main.yml | 108 ------- tasks/nspawn_cache.yml | 95 ------ tasks/nspawn_cache_prestage.yml | 61 ---- tasks/nspawn_networking.yml | 242 --------------- tasks/nspawn_volume.yml | 130 -------- templates/dnsmasq-config.conf.j2 | 16 - .../prep-scripts/_container_sys_setup.sh.j2 | 61 ---- .../prep-scripts/nspawn_debian_prep.sh.j2 | 64 ---- .../prep-scripts/nspawn_ubuntu_prep.sh.j2 | 57 ---- .../systemd-journald-nspawn_host.conf.j2 | 5 - templates/systemd-nspawn@.service.j2 | 58 ---- templates/systemd-proxy-unit.conf.j2 | 6 - tests/ansible-role-requirements.yml | 21 -- tests/files/container-file-copy-test.txt | 1 - tests/inventory | 2 - tests/test.yml | 154 ---------- tox.ini | 88 ------ vars/debian-10.yml | 67 ---- vars/debian-9.yml | 68 ---- vars/main.yml | 42 --- vars/ubuntu-18.04.yml | 65 ---- vars/ubuntu-20.04.yml | 65 ---- zuul.d/jobs.yaml | 45 --- zuul.d/project.yaml | 41 --- 55 files changed, 8 insertions(+), 3551 deletions(-) delete mode 100644 .gitignore delete mode 100644 CONTRIBUTING.rst delete mode 100644 LICENSE delete mode 100644 Vagrantfile delete mode 100644 bindep.txt delete mode 100644 defaults/main.yml delete mode 100644 doc/Makefile delete mode 100644 doc/requirements.txt delete mode 100644 doc/source/conf.py delete mode 100644 doc/source/index.rst delete mode 100644 examples/playbook.yml delete mode 100644 files/lxc-image-fetch-url.py delete mode 100644 files/nspawn-attach.sh delete mode 100644 handlers/main.yml delete mode 100644 manual-test.rc delete mode 100644 meta/main.yml delete mode 100644 meta/openstack-ansible.yml delete mode 100644 releasenotes/notes/.placeholder delete mode 100644 releasenotes/source/_static/.placeholder delete mode 100644 releasenotes/source/_templates/.placeholder delete mode 100644 releasenotes/source/conf.py delete mode 100644 releasenotes/source/index.rst delete mode 100644 releasenotes/source/rocky.rst delete mode 100644 releasenotes/source/stein.rst delete mode 100644 releasenotes/source/train.rst delete mode 100644 releasenotes/source/unreleased.rst delete mode 100644 releasenotes/source/ussuri.rst delete mode 100755 run_tests.sh delete mode 100644 setup.cfg delete mode 100644 setup.py delete mode 100644 tasks/main.yml delete mode 100644 tasks/nspawn_cache.yml delete mode 100644 tasks/nspawn_cache_prestage.yml delete mode 100644 tasks/nspawn_networking.yml delete mode 100644 tasks/nspawn_volume.yml delete mode 100644 templates/dnsmasq-config.conf.j2 delete mode 100644 templates/prep-scripts/_container_sys_setup.sh.j2 delete mode 100644 templates/prep-scripts/nspawn_debian_prep.sh.j2 delete mode 100644 templates/prep-scripts/nspawn_ubuntu_prep.sh.j2 delete mode 100644 templates/systemd-journald-nspawn_host.conf.j2 delete mode 100644 templates/systemd-nspawn@.service.j2 delete mode 100644 templates/systemd-proxy-unit.conf.j2 delete mode 100644 tests/ansible-role-requirements.yml delete mode 100644 tests/files/container-file-copy-test.txt delete mode 100644 tests/inventory delete mode 100644 tests/test.yml delete mode 100644 tox.ini delete mode 100644 vars/debian-10.yml delete mode 100644 vars/debian-9.yml delete mode 100644 vars/main.yml delete mode 100644 vars/ubuntu-18.04.yml delete mode 100644 vars/ubuntu-20.04.yml delete mode 100644 zuul.d/jobs.yaml delete mode 100644 zuul.d/project.yaml diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 3a77206..0000000 --- a/.gitignore +++ /dev/null @@ -1,69 +0,0 @@ -# Add patterns in here to exclude files created by tools integrated with this -# repository, such as test frameworks from the project's recommended workflow, -# rendered documentation and package builds. -# -# Don't add patterns to exclude files created by preferred personal tools -# (editors, IDEs, your operating system itself even). These should instead be -# maintained outside the repository, for example in a ~/.gitignore file added -# with: -# -# git config --global core.excludesfile '~/.gitignore' - -# Compiled source # -################### -*.com -*.class -*.dll -*.exe -*.o -*.so -*.pyc -build/ -dist/ -doc/build/ - -# Packages # -############ -# it's better to unpack these files and commit the raw source -# git has its own built in compression methods -*.7z -*.dmg -*.gz -*.iso -*.jar -*.rar -*.tar -*.zip - -# Logs and databases # -###################### -*.log -*.sql -*.sqlite -logs/* - -# OS generated files # -###################### -._* -.tox -*.egg-info -.eggs - -# Generated by pbr while building docs -###################################### -AUTHORS -ChangeLog - -# Files created by releasenotes build -releasenotes/build - -# Test temp files -tests/common -tests/*.retry - -# Vagrant artifacts -.vagrant - -# Git clones -openstack-ansible-ops -previous diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst deleted file mode 100644 index 76d4b33..0000000 --- a/CONTRIBUTING.rst +++ /dev/null @@ -1,83 +0,0 @@ -OpenStack nspawn host setup -########################### - -contributor guidelines -^^^^^^^^^^^^^^^^^^^^^^ - -Filing Bugs ------------ - -Bugs should be filed on Launchpad, not GitHub: "https://bugs.launchpad.net/openstack-ansible" - - -When submitting a bug, or working on a bug, please ensure the following criteria are met: - * The description clearly states or describes the original problem or root cause of the problem. - * Include historical information on how the problem was identified. - * Any relevant logs are included. - * The provided information should be totally self-contained. External access to web services/sites should not be needed. - * Steps to reproduce the problem if possible. - - -Submitting Code ---------------- - -Changes to the project should be submitted for review via the Gerrit tool, following -the workflow documented at: "http://docs.openstack.org/infra/manual/developers.html#development-workflow" - -Pull requests submitted through GitHub will be ignored and closed without regard. - - -Extra ------ - -Tags: - If it's a bug that needs fixing in a branch in addition to Master, add a '\-backport-potential' tag (eg ``juno-backport-potential``). There are predefined tags that will autocomplete. - -Status: - Please leave this alone, it should be New till someone triages the issue. - -Importance: - Should only be touched if it is a Blocker/Gating issue. If it is, please set to High, and only use Critical if you have found a bug that can take down whole infrastructures. - - -Style guide ------------ - -When creating tasks and other roles for use in Ansible please create then using the YAML dictionary format. - -Example YAML dictionary format: - .. code-block:: yaml - - - name: The name of the tasks - module_name: - thing1: "some-stuff" - thing2: "some-other-stuff" - tags: - - some-tag - - some-other-tag - - -Example **NOT** in YAML dictionary format: - .. code-block:: yaml - - - name: The name of the tasks - module_name: thing1="some-stuff" thing2="some-other-stuff" - tags: - - some-tag - - some-other-tag - - -Usage of the ">" and "|" operators should be limited to Ansible conditionals and command modules such as the ansible ``shell`` module. - - -Issues ------- - -When submitting an issue, or working on an issue please ensure the following criteria are met: - * The description clearly states or describes the original problem or root cause of the problem. - * Include historical information on how the problem was identified. - * Any relevant logs are included. - * If the issue is a bug that needs fixing in a branch other than Master, add the 'backport potential' tag TO THE ISSUE (not the PR). - * The provided information should be totally self-contained. External access to web services/sites should not be needed. - * If the issue is needed for a hotfix release, add the 'expedite' label. - * Steps to reproduce the problem if possible. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 8f71f43..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/README.rst b/README.rst index 9a4f595..21e1ba4 100644 --- a/README.rst +++ b/README.rst @@ -1,29 +1,10 @@ -======================== -Team and repository tags -======================== +This project is no longer maintained. -.. image:: https://governance.openstack.org/tc/badges/openstack-ansible-nspawn_hosts.svg - :target: https://governance.openstack.org/tc/reference/tags/index.html +The contents of this repository are still available in the Git +source code management system. To see the contents of this +repository before it reached its end of life, please check out the +previous commit with "git checkout HEAD^1". -.. Change things from this point on - -============================== -OpenStack-Ansible nspawn hosts -============================== - -Ansible role that configures a host for running nspawn containers. - -Documentation for the project can be found at: - https://docs.openstack.org/openstack-ansible-nspawn_hosts/latest - -Release notes for the project can be found at: - https://docs.openstack.org/releasenotes/openstack-ansible-nspawn_hosts/ - -The project source code repository is located at: - https://opendev.org/openstack/openstack-ansible-nspawn_hosts/ - -The project home is at: - https://launchpad.net/openstack-ansible - -The project bug tracker is located at: - https://bugs.launchpad.net/openstack-ansible +For any further questions, please email +openstack-discuss@lists.openstack.org or join #openstack-ansible on +OFTC. diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index 7691c3c..0000000 --- a/Vagrantfile +++ /dev/null @@ -1,62 +0,0 @@ -# Note: -# This file is maintained in the openstack-ansible-tests repository. -# https://opendev.org/openstack/openstack-ansible-tests/src/Vagrantfile -# -# If you need to perform any change on it, you should modify the central file, -# then, an OpenStack CI job will propagate your changes to every OSA repository -# since every repo uses the same Vagrantfile - -# Verify whether required plugins are installed. -required_plugins = [ "vagrant-disksize" ] -required_plugins.each do |plugin| - if not Vagrant.has_plugin?(plugin) - raise "The vagrant plugin #{plugin} is required. Please run `vagrant plugin install #{plugin}`" - end -end - -Vagrant.configure(2) do |config| - config.vm.provider "virtualbox" do |v| - v.memory = 6144 - v.cpus = 2 - # https://github.com/hashicorp/vagrant/issues/9524 - v.customize ["modifyvm", :id, "--audio", "none"] - end - - config.vm.synced_folder ".", "/vagrant", type: "rsync" - - config.vm.provision "shell", - privileged: false, - inline: <<-SHELL - cd /vagrant - ./run_tests.sh - SHELL - - config.vm.define "centos8" do |centos8| - centos8.vm.box = "centos/8" - end - - config.vm.define "debian8" do |debian8| - debian8.vm.box = "debian/jessie64" - end - - config.vm.define "debian9" do |debian9| - debian9.vm.box = "debian/stretch64" - end - - config.vm.define "gentoo" do |gentoo| - gentoo.vm.box = "generic/gentoo" - end - - config.vm.define "opensuse150" do |leap150| - leap150.vm.box = "opensuse/openSUSE-15.0-x86_64" - end - - config.vm.define "opensuse151" do |leap151| - leap151.vm.box = "opensuse/openSUSE-15.1-x86_64" - end - - config.vm.define "ubuntu1804" do |bionic| - bionic.disksize.size = "40GB" - bionic.vm.box = "ubuntu/bionic64" - end -end diff --git a/bindep.txt b/bindep.txt deleted file mode 100644 index bb77692..0000000 --- a/bindep.txt +++ /dev/null @@ -1,50 +0,0 @@ -# This file facilitates OpenStack-CI package installation -# before the execution of any tests. -# -# See the following for details: -# - https://docs.openstack.org/infra/bindep/ -# - https://opendev.org/openstack-infra/bindep -# -# Even if the role does not make use of this facility, it -# is better to have this file empty, otherwise OpenStack-CI -# will fall back to installing its default packages which -# will potentially be detrimental to the tests executed. -# -# Note: -# This file is maintained in the openstack-ansible-tests repository. -# https://opendev.org/openstack/openstack-ansible-tests/src/bindep.txt -# If you need to remove or add extra dependencies, you should modify -# the central file instead and once your change is accepted then update -# this file as well. The purpose of this file is to ensure that Python and -# Ansible have all their necessary binary requirements on the test host before -# tox executes. Any binary requirements needed by services/roles should be -# installed by those roles in their applicable package install tasks, not through -# using this file. -# - -# The gcc compiler -gcc - -# Base requirements for Ubuntu -git-core [platform:dpkg platform:suse] -libssl-dev [platform:dpkg] -libffi-dev [platform:dpkg] -python3 [platform:dpkg] -python3-apt [platform:dpkg] -python3-dev [platform:dpkg] - -# Base requirements for RPM distros -gcc-c++ [platform:rpm] -git [platform:rpm !platform:suse] -libffi-devel [platform:rpm] -openssl-devel [platform:rpm] -python3-dnf [platform:fedora] -python3-devel [platform:rpm] - -# Base requirements for Gentoo -git [platform:gentoo] - -# For SELinux -libselinux-python3 [platform:redhat] -libsemanage-python3 [platform:redhat] -iptables [platform:redhat] diff --git a/defaults/main.yml b/defaults/main.yml deleted file mode 100644 index 7ab00f0..0000000 --- a/defaults/main.yml +++ /dev/null @@ -1,233 +0,0 @@ ---- -# Copyright 2018, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# === systemd-nspawn defaults ================================================== -# Default networks that will be applied ONLY to nspwan deployments. -nspawn_networks: - nspawn_address: - # The name of the interface, by default this is a dummy device on a private - # network however it could be a bridge or any other interface. - bridge: "nspawn0" - # Optional | Set bool to enable a private device. This will create a bridge - # not connecting to the underlying L2. - private_device: true - # Optional | Enable or disable dhcp on this network - enable_dhcp: true - # Optional | When dhcp is enabled set the IP address range - dhcp_range: 10.0.4.2,10.0.4.129 - # Optional | Set the address for the macvlan network - address: 10.0.4.1 - # Optional | Set the netmask for the macvlan network - netmask: 255.255.255.0 - # Optional | Set the macvlan mode - macvlan_mode: bridge - # Optional | set the routed interface - routed_interface: mv-nspawn0 - # Optional | Force address space to be scoped to only the host - host_only: true - -# Primary interface used for host to container communications. In the event that -# the underlying system is running a condensed network stack a route will be -# created for all networks that have a defined `cidr` using the primary -# interface. In the event that an address is defined for a given network Ansible -# facts will be used to determine if an address needs to be assigned to the -# macvlan interface. -# -# + simple example: -# management_cidr: "172.29.236.0/24" -# container_networks: -# management_address: -# bridge: eth0 -# -# In this example the `managemen_cidr` corresponds to the `management_address` -# network and because there's no IP address within the address block a route is -# used allowing the host to communicate with the containers. For the route to be -# added using any network, the network must have a corresponding CIDR with no -# defined address. -# -# Multiple macvlans can be spawned from a single host interface. -# + simple example: -# management_cidr: "172.29.236.0/24" -# storage_cidr: "10.0.0.0/24" -# flat_cidr: "172.29.239.0/24" -# container_networks: -# management_address: -# bridge: eth0 -# storage_address: -# bridge: eth0 -# address: 10.0.0.100 -# netmask: 255.255.255.0 -# tunnel_address: -# bridge: eth0.10 -# flat_address: -# bridge: eth0 -# interface: mv-flat -# routed_interface: mv-flat -# -# Extra interfaces that are wholly configured by the user can be set using the -# container extra networks option. This option follows all of the parameters of -# both `container_networks` and `nspawn_networks`. -container_extra_networks: {} - -# In this example management storage and tunnel networks will be created and -# attached to the containers. -# + The management network will have a route created for its corresponding CIDR -# + The storage network will have the defined address added to the macvlan -# interface with `scope` set to `host`, assuming the address is not already -# assigned to the underlying interface, "eth0". -# + The tunnel network will be attached to the container and isolated from the -# host with no access to without first attaching to the container. -# + The flat network will be created and attached to the container with a host -# route on the defined `routed_interface`. -# -nspawn_primary_interface: "{{ nspawn_networks['nspawn_address']['bridge'] }}" - -# Used to define the default macvlan mode when not specifically defined within -# container_networks or nspawn_networks. See all available options here: -# https://www.freedesktop.org/software/systemd/man/systemd.netdev.html#%5BMACVLAN%5D%20Section%20Options -nspawn_macvlan_mode: bridge - -# Set the default volume size. This is used when creating a loopback filesystem -# when "/var/lib/machines" is not already a mount point. -nspawn_host_machine_volume_size: 64G - -# Enable or Disable the BTRFS quota system for the "/var/lib/machines" mount -# point. More information on the BTRFS quota system can be found here: -# * https://btrfs.wiki.kernel.org/index.php/Quota_support -nspawn_host_machine_quota_disabled: false - -# Set the default qgroup limits used for file system quotas. The default is -# "none". See the following documentation for more information: -# * https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-qgroup -nspawn_host_qgroup_space_limit: none -nspawn_host_qgroup_compression_limit: none - -# Boolean option to validate the certificates when fetching images. If using a -# self-signed certificate this should be se to "false". -nspawn_hosts_validate_certs: true - -# Set the installation package state. Options are [latest, present, absent]. -nspawn_hosts_package_state: "latest" - -# Default base image to build containers from. This setting, by default, is -# derived from the host machine OS. If a custome name is desirable this can be -# changed. -# nspawn_container_base_name: "aio1_utility_container-67440f99" -nspawn_container_base_name: "{{ nspawn_cache_map.distro }}-{{ nspawn_cache_map.release }}-{{ nspawn_cache_map.arch }}" - -# URL to image tarball -nspawn_hosts_container_image_url: "{{ _nspawn_hosts_container_image_url | default(null) }}" - -# Enable or disable the legacy image download system. -nspawn_hosts_container_image_download_legacy: "{{ _nspawn_hosts_container_image_download_legacy | default(false) }}" - -# Set the legacy image download variant -nspawn_cache_default_variant: "default" - -# When preparing the image cache a deployer may want to run specific commands -# at the beginning of the cache prep or the end. These options provide for that -# capability. The commands are string formatted and will be interpreted -# literally. - -# nspawn_cache_prep_pre_commands: | -# echo "Run Special command 1" -# echo "Run Special command 2" -nspawn_cache_prep_pre_commands: "" -nspawn_cache_prep_post_commands: "" - -# If the image cache is stale or is in general need of replacement set this to -# True. The role, by default, will only update the image cache when required. -nspawn_image_cache_refresh: false - -# The cache prep DNS may need to be changed based on the conditions within the -# deployment. Set this list to whatever is required to get access to the -# inter(intra)net within the deployment. The default is to use OpenDNS and fall -# back to google. -nspawn_cache_prep_dns: - - "208.67.222.222" - - "8.8.8.8" - -# Set the cache map used when creating the container. -# nspawn_cache_map: -# distro: "$DISTRO_NAME" -# arch: "{{ nspawn_architecture_mapping.get(ansible_architecture) }}" -# release: "{{ hostvars[physical_host]['ansible_distribution_version'] }}" -nspawn_cache_map: "{{ _nspawn_cache_map | default({}) }}" - -# Default list of files to copy from the host into the container when the -# default cache is created. This list is merged to create the list of files -# to copy into the container base image which is captured under the -# `nspawn_copy_from_host` option. - -# NOTICE: With all of the copy options it should be noted that it's using rsync -# within the task. If the target being copied is a "directory" the path -# should end with a tailing slash. -nspawn_default_copy_from_host: - - /etc/default/locale - - /etc/environment - - /etc/localtime - - /etc/locale.conf - - /etc/protocols - -# nspawn_copy_from_host: -# - /etc/resolve.conf -# - /etc/apt/sources.list -nspawn_copy_from_host: "{{ nspawn_default_copy_from_host | union(_nspawn_copy_from_host | default([])) }}" - -# Default list of files to copy from the host into the container when the -# default cache is created. This list will be merged with the option -# "nspawn_copy_from_host". which allows a deployer to set additional files to -# be copied into the container on top of the system managed ones. -# nspawn_container_cache_files_from_host: -# - /etc/apt/apt.conf.d/ -# - /etc/apt/preferences.d/ -nspawn_container_cache_files_from_host: [] - -# Default list of packages to install within the build container cache. These -# packages are installed first, before running anything else within the image. -# nspawn_container_distro_required_packages: -# - gnupg -nspawn_container_distro_required_packages: "{{ _nspawn_container_distro_required_packages | default([]) }}" - -# Define a list of extra distribution packages to install into the container cache -nspawn_container_extra_distro_packages: [] - -# Default list of packages to install within the build container cache. -# nspawn_container_distro_packages: -# - curl -# - tcpdump -nspawn_container_distro_packages: "{{ _nspawn_container_distro_packages | default([]) + nspawn_container_extra_distro_packages }}" - -# Define a list of extra distribution packages to install onto the host -nspawn_hosts_extra_distro_packages: [] - -# Default list of packages to install on the physical host machine. -# nspawn_hosts_distro_packages: -# - bridge-utils -# - btrfs-tools -nspawn_hosts_distro_packages: "{{ _nspawn_hosts_distro_packages | default([]) + nspawn_hosts_extra_distro_packages }}" - - -# === General container defaults =============================================== -# Default networks that will be applied ALL containerized deployments. -# container_networks: -# management_address: -# address: "{{ ansible_host | default('localhost') }}" -# netmask: "255.255.255.0" -# bridge: "br-mgmt" -# static_routes: -# - cidr: 172.29.100.0/24 -# gateway: 172.29.100.100 -container_networks: {} diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index eb9a59e..0000000 --- a/doc/Makefile +++ /dev/null @@ -1,195 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " applehelp to make an Apple Help Book" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - @echo " coverage to run coverage check of the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/openstack-ansible-nspawn_hosts.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/openstack-ansible-nspawn_hosts.qhc" - -applehelp: - $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp - @echo - @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." - @echo "N.B. You won't be able to view it unless you put it in" \ - "~/Library/Documentation/Help or install it in your application" \ - "bundle." - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/openstack-ansible-nspawn_hosts" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/openstack-ansible-nspawn_hosts" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -coverage: - $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage - @echo "Testing of coverage in the sources finished, look at the " \ - "results in $(BUILDDIR)/coverage/python.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." - -livehtml: html - sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html diff --git a/doc/requirements.txt b/doc/requirements.txt deleted file mode 100644 index 07801f8..0000000 --- a/doc/requirements.txt +++ /dev/null @@ -1,16 +0,0 @@ -# The order of packages is significant, because pip processes them in the order -# of appearance. Changing the order has an impact on the overall integration -# process, which may cause wedges in the gate later. - -# WARNING: -# This file is maintained in the openstack-ansible-tests repository. -# https://opendev.org/openstack/openstack-ansible-tests/src/branch/master/sync/doc/requirements.txt -# If you need to modify this file, update the one in the -# openstack-ansible-tests repository. Once it merges there, the changes will -# automatically be proposed to all the repositories which use it. - -sphinx>=2.0.0,!=2.1.0 # BSD -sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD -openstackdocstheme>=2.2.1 # Apache-2.0 -reno>=3.1.0 # Apache-2.0 -doc8>=0.6.0 # Apache-2.0 diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100644 index 9412463..0000000 --- a/doc/source/conf.py +++ /dev/null @@ -1,290 +0,0 @@ -#!/usr/bin/env python3 - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'openstackdocstheme', - 'sphinx.ext.autodoc', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The encoding of source files. -# source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -author = 'OpenStack-Ansible Contributors' -category = 'Miscellaneous' -copyright = '2014-2016, OpenStack-Ansible Contributors' -description = 'OpenStack-Ansible deploys OpenStack environments using Ansible.' -project = 'OpenStack-Ansible' -role_name = 'nspawn_hosts' -target_name = 'openstack-ansible-' + role_name -title = 'OpenStack-Ansible Documentation: ' + role_name + 'role' - -# openstackdocstheme options -openstackdocs_repo_name = 'openstack/' + target_name -openstackdocs_bug_project = project.lower() -openstackdocs_bug_tag = '' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -# today = '' -# Else, today_fmt is used as the format for a strftime call. -# today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -# default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -# add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -# add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -# show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'native' - -# A list of ignored prefixes for module index sorting. -# modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -# keep_warnings = False - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'openstackdocs' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -# html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -# html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -# html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -# html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -# html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -# html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -# html_extra_path = [] - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -# html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -# html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -# html_additional_pages = {} - -# If false, no module index is generated. -# html_domain_indices = True - -# If false, no index is generated. -# html_use_index = True - -# If true, the index is split into individual pages for each letter. -# html_split_index = False - -# If true, links to the reST sources are added to the pages. -# html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -# html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -# html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -# html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -# html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' -# html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# Now only 'ja' uses this config value -# html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -# html_search_scorer = 'scorer.js' - -# Output file base name for HTML help builder. -htmlhelp_basename = target_name + '-docs' - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # 'preamble': '', - - # Latex figure (float) alignment - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, target_name + '.tex', - title, author, 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -# latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -# latex_use_parts = False - -# If true, show page references after internal links. -# latex_show_pagerefs = False - -# If true, show URL addresses after external links. -# latex_show_urls = False - -# Documents to append as an appendix to all manuals. -# latex_appendices = [] - -# If false, no module index is generated. -# latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, target_name, - title, [author], 1) -] - -# If true, show URL addresses after external links. -# man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, target_name, - title, author, project, - description, category), -] - -# Documents to append as an appendix to all manuals. -# texinfo_appendices = [] - -# If false, no module index is generated. -# texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -# texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -# texinfo_no_detailmenu = False diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index 713edb7..0000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,26 +0,0 @@ -============================== -OpenStack-Ansible nspawn hosts -============================== - -Ansible role that configures a host for running nspawn containers. - -To clone or view the source code for this repository, visit the role repository -for `nspawn_hosts `_. - -Default variables -~~~~~~~~~~~~~~~~~ - -.. literalinclude:: ../../defaults/main.yml - :language: yaml - :start-after: under the License. - -Dependencies -~~~~~~~~~~~~ - -This role needs pip >= 7.1 installed on the target host. - -Example playbook -~~~~~~~~~~~~~~~~ - -.. literalinclude:: ../../examples/playbook.yml - :language: yaml diff --git a/examples/playbook.yml b/examples/playbook.yml deleted file mode 100644 index 92377eb..0000000 --- a/examples/playbook.yml +++ /dev/null @@ -1,5 +0,0 @@ -- name: Basic nspawn host setup - hosts: "hosts" - user: root - roles: - - { role: "nspawn_hosts" } diff --git a/files/lxc-image-fetch-url.py b/files/lxc-image-fetch-url.py deleted file mode 100644 index 7da5f98..0000000 --- a/files/lxc-image-fetch-url.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -try: - import httplib -except ImportError: - import http.client as httplib -import ssl -try: - import urlparse -except ImportError: - import urllib.parse as urlparse -import sys - - -__DOC__ = """ -USAGE: - This script will take arguments passed into it to discover the url - of a given container image using the distro, release, architecture, - and variant as the parameters. - -EXAMPLE: -# python lxc-image-fetch-url ubuntu bionic amd64 default -""" - -LXC_CACHE_SERVER = 'https://us.images.linuxcontainers.org' -LXC_INDEX = '{0}/meta/1.0/index-system'.format(LXC_CACHE_SERVER) - - -def get_image_url(url, depth=0): - if depth > 10: - raise SystemExit('Too many redirects') - - url_path = urlparse.urlparse(url, allow_fragments=True) - if url_path.scheme == 'https': - conn = httplib.HTTPSConnection( - host=url_path.netloc, - context=ssl._create_unverified_context() - ) - else: - conn = httplib.HTTPConnection(host=url_path.netloc) - - try: - conn.request('GET', url_path.path) - except httplib.BadStatusLine: - raise SystemExit('Connection Failure') - else: - resp = conn.getresponse() - headers = dict(resp.getheaders()) - check_redirect = headers.get('location', None) - if not check_redirect: - check_redirect = headers.get('Location', None) - - if check_redirect: - depth += 1 - return get_image_url( - url=check_redirect, - depth=depth - ) - else: - return ( - str(url), - resp.read().decode('UTF-8').splitlines() - ) - finally: - conn.close() - - -def main(): - try: - distro = sys.argv[1] - release = sys.argv[2] - arch = sys.argv[3] - variant = sys.argv[4] - except IndexError: - print('Missing argument, Please see the documentation.') - raise SystemExit(__DOC__) - - _, meta = get_image_url(url=LXC_INDEX, depth=0) - image_hint = '{0};{1};{2};{3}'.format( - distro, - release, - arch, - variant - ) - - images = sorted([i for i in meta if i.strip().startswith(image_hint)]) - if not images: - print(__DOC__ + '\nAvailable options:') - for line in meta: - print(';'.join(line.split(';')[:-2])) - - raise SystemExit( - 'No Image found with image hint "{0}"'.format(image_hint) - ) - - container_url = urlparse.urljoin( - urlparse.urljoin( - LXC_CACHE_SERVER, - images[0].split(';')[-1] - ), - 'rootfs.tar.xz' - ) - print(container_url) - - -if __name__ == '__main__': - main() diff --git a/files/nspawn-attach.sh b/files/nspawn-attach.sh deleted file mode 100644 index aeadcf3..0000000 --- a/files/nspawn-attach.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2018, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Enter a container using a friendly universal syntax -CPID=$(machinectl status $1 | awk '/Leader:/ {print $2}') -nsenter --mount=/proc/$CPID/ns/mnt \ - --net=/proc/$CPID/ns/net \ - --pid=/proc/$CPID/ns/pid \ - --uts=/proc/$CPID/ns/uts \ - --ipc=/proc/$CPID/ns/ipc diff --git a/handlers/main.yml b/handlers/main.yml deleted file mode 100644 index ffc18e7..0000000 --- a/handlers/main.yml +++ /dev/null @@ -1,54 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Disable host dnsmasq service - systemd: - name: "dnsmasq.service" - state: "stopped" - enabled: false - masked: true - daemon_reload: true - -- name: Remove rootfs archive - file: - path: "/tmp/{{ nspawn_hosts_container_image_url | basename }}" - state: "absent" - -- name: Enable network dnsmasq service - systemd: - name: "dnsmasq-{{ 'mv-' + item.value.bridge.split('br-')[-1] }}.service" - state: "restarted" - enabled: true - daemon_reload: true - when: - - item.value.enable_dhcp | default(false) | bool - with_dict: "{{ nspawn_combined_networks }}" - -- name: Remove policy-rc - file: - path: "/usr/sbin/policy-rc.d" - state: absent - changed_when: false - -- name: Restart systemd-journald - systemd: - name: "systemd-journald" - state: restarted - enabled: yes - daemon_reload: true - -- name: Reload systemd-daemon - systemd: - daemon_reload: true diff --git a/manual-test.rc b/manual-test.rc deleted file mode 100644 index 7016c45..0000000 --- a/manual-test.rc +++ /dev/null @@ -1,33 +0,0 @@ -export VIRTUAL_ENV=$(pwd) -export ANSIBLE_HOST_KEY_CHECKING=False -export ANSIBLE_SSH_CONTROL_PATH=/tmp/%%h-%%r - -# TODO (odyssey4me) These are only here as they are non-standard folder -# names for Ansible 1.9.x. We are using the standard folder names for -# Ansible v2.x. We can remove this when we move to Ansible 2.x. -export ANSIBLE_ACTION_PLUGINS=${HOME}/.ansible/plugins/action -export ANSIBLE_CALLBACK_PLUGINS=${HOME}/.ansible/plugins/callback -export ANSIBLE_FILTER_PLUGINS=${HOME}/.ansible/plugins/filter -export ANSIBLE_LOOKUP_PLUGINS=${HOME}/.ansible/plugins/lookup - -# This is required as the default is the current path or a path specified -# in ansible.cfg -export ANSIBLE_LIBRARY=${HOME}/.ansible/plugins/library - -# This is required as the default is '/etc/ansible/roles' or a path -# specified in ansible.cfg -export ANSIBLE_ROLES_PATH=${HOME}/.ansible/roles:$(pwd)/.. - -export ANSIBLE_SSH_ARGS="-o ControlMaster=no \ - -o UserKnownHostsFile=/dev/null \ - -o StrictHostKeyChecking=no \ - -o ServerAliveInterval=64 \ - -o ServerAliveCountMax=1024 \ - -o Compression=no \ - -o TCPKeepAlive=yes \ - -o VerifyHostKeyDNS=no \ - -o ForwardX11=no \ - -o ForwardAgent=yes" - -echo "Run manual functional tests by executing the following:" -echo "# ./.tox/functional/bin/ansible-playbook -i tests/inventory tests/test.yml" diff --git a/meta/main.yml b/meta/main.yml deleted file mode 100644 index dbab724..0000000 --- a/meta/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -# Copyright 2014, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -galaxy_info: - author: rcbops - description: Deployment of nspawn hosts for use in Rackspace Private Cloud - company: Rackspace - license: Apache2 - min_ansible_version: 2.2.0 - platforms: - - name: Debian - versions: - - stretch - - name: Ubuntu - versions: - - bionic - categories: - - cloud - - nspawn - - development - - openstack -dependencies: - - role: apt_package_pinning - when: - - ansible_pkg_mgr == 'apt' diff --git a/meta/openstack-ansible.yml b/meta/openstack-ansible.yml deleted file mode 100644 index e0d5afa..0000000 --- a/meta/openstack-ansible.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# (c) 2017, Jean-Philippe Evrard - -maturity_info: - status: development - created_during: queens diff --git a/releasenotes/notes/.placeholder b/releasenotes/notes/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/releasenotes/source/_static/.placeholder b/releasenotes/source/_static/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/releasenotes/source/_templates/.placeholder b/releasenotes/source/_templates/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/releasenotes/source/conf.py b/releasenotes/source/conf.py deleted file mode 100644 index 840b304..0000000 --- a/releasenotes/source/conf.py +++ /dev/null @@ -1,276 +0,0 @@ -#!/usr/bin/env python3 - -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'openstackdocstheme', - 'reno.sphinxext', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -# source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -author = 'OpenStack-Ansible Contributors' -category = 'Miscellaneous' -copyright = '2014-2016, OpenStack-Ansible Contributors' -description = 'OpenStack-Ansible deploys OpenStack environments using Ansible.' -project = 'OpenStack-Ansible' -role_name = 'nspawn_hosts' -target_name = 'openstack-ansible-' + role_name -title = 'OpenStack-Ansible Release Notes: ' + role_name + 'role' - -# Release notes do not need a version number in the title, they -# cover multiple releases. -# The full version, including alpha/beta/rc tags. -release = '' -# The short X.Y version. -version = '' - -# openstackdocstheme options -openstackdocs_repo_name = 'openstack/' + target_name -openstackdocs_bug_project = project.lower() -openstackdocs_bug_tag = '' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -# today = '' -# Else, today_fmt is used as the format for a strftime call. -# today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -# default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -# add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -# add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -# show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'native' - -# A list of ignored prefixes for module index sorting. -# modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -# keep_warnings = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'openstackdocs' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -# html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -# html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -# html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -# html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -# html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -# html_extra_path = [] - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -# html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -# html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -# html_additional_pages = {} - -# If false, no module index is generated. -# html_domain_indices = True - -# If false, no index is generated. -# html_use_index = True - -# If true, the index is split into individual pages for each letter. -# html_split_index = False - -# If true, links to the reST sources are added to the pages. -# html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -# html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -# html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -# html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -# html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = target_name + '-docs' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # 'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, target_name + '.tex', - title, author, 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -# latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -# latex_use_parts = False - -# If true, show page references after internal links. -# latex_show_pagerefs = False - -# If true, show URL addresses after external links. -# latex_show_urls = False - -# Documents to append as an appendix to all manuals. -# latex_appendices = [] - -# If false, no module index is generated. -# latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, target_name, - title, [author], 1) -] - -# If true, show URL addresses after external links. -# man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, target_name, - title, author, project, - description, category), -] - -# Documents to append as an appendix to all manuals. -# texinfo_appendices = [] - -# If false, no module index is generated. -# texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -# texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -# texinfo_no_detailmenu = False - -# -- Options for Internationalization output ------------------------------ -locale_dirs = ['locale/'] diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst deleted file mode 100644 index cfbb4b8..0000000 --- a/releasenotes/source/index.rst +++ /dev/null @@ -1,12 +0,0 @@ -================================ - OpenStack-Ansible Release Notes -================================ - -.. toctree:: - :maxdepth: 1 - - unreleased - ussuri - train - stein - rocky diff --git a/releasenotes/source/rocky.rst b/releasenotes/source/rocky.rst deleted file mode 100644 index 40dd517..0000000 --- a/releasenotes/source/rocky.rst +++ /dev/null @@ -1,6 +0,0 @@ -=================================== - Rocky Series Release Notes -=================================== - -.. release-notes:: - :branch: stable/rocky diff --git a/releasenotes/source/stein.rst b/releasenotes/source/stein.rst deleted file mode 100644 index efaceb6..0000000 --- a/releasenotes/source/stein.rst +++ /dev/null @@ -1,6 +0,0 @@ -=================================== - Stein Series Release Notes -=================================== - -.. release-notes:: - :branch: stable/stein diff --git a/releasenotes/source/train.rst b/releasenotes/source/train.rst deleted file mode 100644 index 5839003..0000000 --- a/releasenotes/source/train.rst +++ /dev/null @@ -1,6 +0,0 @@ -========================== -Train Series Release Notes -========================== - -.. release-notes:: - :branch: stable/train diff --git a/releasenotes/source/unreleased.rst b/releasenotes/source/unreleased.rst deleted file mode 100644 index cd22aab..0000000 --- a/releasenotes/source/unreleased.rst +++ /dev/null @@ -1,5 +0,0 @@ -============================== - Current Series Release Notes -============================== - -.. release-notes:: diff --git a/releasenotes/source/ussuri.rst b/releasenotes/source/ussuri.rst deleted file mode 100644 index e21e50e..0000000 --- a/releasenotes/source/ussuri.rst +++ /dev/null @@ -1,6 +0,0 @@ -=========================== -Ussuri Series Release Notes -=========================== - -.. release-notes:: - :branch: stable/ussuri diff --git a/run_tests.sh b/run_tests.sh deleted file mode 100755 index 93e91dd..0000000 --- a/run_tests.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2015, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# PURPOSE: -# This script clones the openstack-ansible-tests repository to the -# tests/common folder in order to be able to re-use test components -# for role testing. This is intended to be the thinnest possible -# shim for test execution outside of OpenStack CI. - -# WARNING: -# This file is maintained in the openstack-ansible-tests repository. -# https://opendev.org/openstack/openstack-ansible-tests/src/run_tests.sh -# If you need to modify this file, update the one in the openstack-ansible-tests -# repository and then update this file as well. The purpose of this file is to -# prepare the host and then execute all the tox tests. -# - -## Shell Opts ---------------------------------------------------------------- -set -xeu - -## Vars ---------------------------------------------------------------------- - -WORKING_DIR="$(readlink -f $(dirname $0))" -OSA_PROJECT_NAME="$(sed -n 's|^project=openstack/\(.*\).git$|\1|p' $(pwd)/.gitreview)" - -COMMON_TESTS_PATH="${WORKING_DIR}/tests/common" -TESTING_HOME=${TESTING_HOME:-$HOME} -ZUUL_TESTS_CLONE_LOCATION="/home/zuul/src/opendev.org/openstack/openstack-ansible-tests" - -# Use .gitreview as the key to determine the appropriate -# branch to clone for tests. -TESTING_BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' "${WORKING_DIR}/.gitreview") -if [[ "${TESTING_BRANCH}" == "" ]]; then - TESTING_BRANCH="master" -fi - -## Main ---------------------------------------------------------------------- - -# Source distribution information -source /etc/os-release || source /usr/lib/os-release - -# Figure out the appropriate package install command -case ${ID,,} in - *suse*) pkg_mgr_cmd="zypper -n in" ;; - centos|rhel|fedora) pkg_mgr_cmd="dnf install -y" ;; - ubuntu|debian) pkg_mgr_cmd="apt-get install -y" ;; - # Gentoo needs to have version set since it's rolling - gentoo) pkg_mgr_cmd="emerge --jobs=4"; VERSION="rolling" ;; - *) echo "unsupported distribution: ${ID,,}"; exit 1 ;; -esac - -# Install git so that we can clone the tests repo if git is not available -case ${ID,,} in - gentoo) which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" dev-vcs/git ;; - *) which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" git ;; -esac - -# Clone the tests repo for access to the common test script -if [[ ! -d "${COMMON_TESTS_PATH}" ]]; then - # The tests repo doesn't need a clone, we can just - # symlink it. - if [[ "${OSA_PROJECT_NAME}" == "openstack-ansible-tests" ]]; then - ln -s "${WORKING_DIR}" "${COMMON_TESTS_PATH}" - - # In zuul v3 any dependent repository is placed into - # /home/zuul/src/opendev.org, so we check to see - # if there is a tests checkout there already. If so, we - # symlink that and use it. - elif [[ -d "${ZUUL_TESTS_CLONE_LOCATION}" ]]; then - ln -s "${ZUUL_TESTS_CLONE_LOCATION}" "${COMMON_TESTS_PATH}" - - # Otherwise we're clearly not in zuul or using a previously setup - # repo in some way, so just clone it from upstream. - else - git clone -b "${TESTING_BRANCH}" \ - https://opendev.org/openstack/openstack-ansible-tests \ - "${COMMON_TESTS_PATH}" - fi -fi - -# Execute the common test script -source tests/common/run_tests_common.sh diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 6d33865..0000000 --- a/setup.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[metadata] -name = openstack-ansible-nspawn_hosts -summary = Role for setting up nspawn Hosts -description-file = - README.rst -author = OpenStack -author-email = openstack-discuss@lists.openstack.org -home-page = https://docs.openstack.org/openstack-ansible-nspawn_hosts/latest/ -classifier = - Intended Audience :: Developers - Intended Audience :: System Administrators - License :: OSI Approved :: Apache Software License - Operating System :: POSIX :: Linux diff --git a/setup.py b/setup.py deleted file mode 100644 index cd35c3c..0000000 --- a/setup.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import setuptools - -setuptools.setup( - setup_requires=['pbr>=2.0.0'], - pbr=True) diff --git a/tasks/main.yml b/tasks/main.yml deleted file mode 100644 index dd5ebd0..0000000 --- a/tasks/main.yml +++ /dev/null @@ -1,108 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Pull systemd version - command: "systemctl --version" - changed_when: false - register: systemd_version - tags: - - skip_ansible_lint - -- name: Set facts - set_fact: - nspawn_systemd_version: "{{ systemd_version.stdout_lines[0].split()[-1] }}" - -- name: Gather variables for each operating system - include_vars: "{{ item }}" - with_first_found: - - "{{ hostvars[physical_host]['ansible_distribution'] | lower }}-{{ hostvars[physical_host]['ansible_distribution_version'] | lower }}.yml" - - "{{ hostvars[physical_host]['ansible_distribution'] | lower }}-{{ hostvars[physical_host]['ansible_distribution_major_version'] | lower }}.yml" - - "{{ hostvars[physical_host]['ansible_os_family'] | lower }}-{{ hostvars[physical_host]['ansible_distribution_major_version'] | lower }}.yml" - - "{{ hostvars[physical_host]['ansible_distribution'] | lower }}.yml" - - "{{ hostvars[physical_host]['ansible_os_family'] | lower }}.yml" - tags: - - always - -# NOTE(cloudnull): Because DNSMasq will be installed this task is required to -# ensure we're never starting that service in an unknown state. -- name: Prevent service from starting on install - copy: - content: | - #!/bin/bash - exit 101 - dest: "/usr/sbin/policy-rc.d" - mode: "0755" - when: - - ansible_pkg_mgr == 'apt' - notify: - - Remove policy-rc - -- name: Install distro packages - package: - pkg: "{{ nspawn_hosts_distro_packages }}" - state: "{{ nspawn_hosts_package_state }}" - register: install_packages - until: install_packages is success - retries: 5 - delay: 2 - notify: - - Disable host dnsmasq service - -- name: Move nspawn-attach into place - copy: - src: nspawn-attach.sh - dest: /usr/local/bin/nspawn-attach - mode: '0755' - -- name: Create networkd and nspawn directories - file: - path: "{{ item }}" - state: directory - with_items: - - /etc/systemd/journald.conf.d - - /etc/systemd/network - - /etc/systemd/nspawn - - /etc/systemd/system/machines.target.wants - - /var/log/journal - -- name: Create journald directories - file: - path: "{{ item }}" - state: directory - owner: root - group: systemd-journal - mode: "02755" - with_items: - - /var/log/journal - -- name: Create journald tempfiles - template: - src: "systemd-journald-nspawn_host.conf.j2" - dest: "/etc/systemd/journald.conf.d/systemd-journald-nspawn_host.conf" - notify: - - Restart systemd-journald - -- include_tasks: nspawn_cache_prestage.yml - tags: - - always - -- include_tasks: nspawn_volume.yml - -- include_tasks: nspawn_networking.yml - -- include_tasks: nspawn_cache.yml - -- name: (RE)Gather facts post setup - setup: {} diff --git a/tasks/nspawn_cache.yml b/tasks/nspawn_cache.yml deleted file mode 100644 index 742a35b..0000000 --- a/tasks/nspawn_cache.yml +++ /dev/null @@ -1,95 +0,0 @@ ---- -# Copyright 2018, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Remove old image cache - command: "btrfs subvolume delete /var/lib/machines/{{ nspawn_container_base_name }}" - register: cache_refresh_del - changed_when: cache_refresh_del.rc == 0 - failed_when: cache_refresh_del.rc not in [0, 1] - when: - - nspawn_image_cache_refresh | bool - -- name: Add image cache - command: "btrfs subvolume create /var/lib/machines/{{ nspawn_container_base_name }}" - args: - creates: "/var/lib/machines/{{ nspawn_container_base_name }}" - register: cache_refresh_add - when: - - nspawn_image_cache_refresh | bool - -- name: Set the qgroup limits - block: - - name: Set the qgroup size|compression limits on machines - command: "btrfs qgroup limit {{ item }} /var/lib/machines/{{ nspawn_container_base_name }}" - changed_when: false - with_items: - - "-e {{ nspawn_host_qgroup_space_limit }}" - - "-c {{ nspawn_host_qgroup_compression_limit }}" - when: - - not nspawn_host_machine_quota_disabled - rescue: - - name: Notice regarding quota system - debug: - msg: >- - There was an error processing the setup of qgroups. Check the system - to ensure they're available otherwise disable the quota system by - setting `nspawn_host_machine_quota_disabled` to true. - -- name: Ensure image has been pre-staged - async_status: - jid: "{{ prestage_image.ansible_job_id }}" - register: job_result - until: job_result.finished - retries: 60 - when: - - nspawn_image_cache_refresh | bool - -- name: Place container rootfs - unarchive: - src: "/tmp/{{ nspawn_hosts_container_image_url | basename }}" - dest: "/var/lib/machines/{{ nspawn_container_base_name }}" - remote_src: True - notify: - - Remove rootfs archive - when: - - nspawn_image_cache_refresh | bool - -- name: Cached image preparation script - template: - src: "prep-scripts/nspawn_{{ nspawn_cache_map.distro }}_prep.sh.j2" - dest: "/var/lib/machines/{{ nspawn_container_base_name }}/usr/local/bin/cache-prep-commands.sh" - mode: "0755" - -- name: Prepare cached image setup commands - shell: "chroot /var/lib/machines/{{ nspawn_container_base_name }} /usr/local/bin/cache-prep-commands.sh > /var/log/nspawn-cache-prep-commands.log 2>&1" - changed_when: false - -# This task runs several commands against the cached image to speed up the -# nspawn_container_create playbook. -- name: Sync files from the host into the container cache - shell: | - if [[ -e "{{ item }}" ]]; then - rsync -av "{{ item }}" "/var/lib/machines/{{ nspawn_container_base_name }}{{ item }}" - else - exit 3 - fi - changed_when: _rsync_container_cache.rc == 0 - failed_when: _rsync_container_cache.rc not in [0, 3] - register: _rsync_container_cache - args: - executable: "/bin/bash" - with_items: "{{ (nspawn_copy_from_host | union(nspawn_container_cache_files_from_host)) | list }}" - when: - - nspawn_image_cache_refresh | bool diff --git a/tasks/nspawn_cache_prestage.yml b/tasks/nspawn_cache_prestage.yml deleted file mode 100644 index 70544fc..0000000 --- a/tasks/nspawn_cache_prestage.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Check cached image status - command: "machinectl image-status {{ nspawn_container_base_name }}" - register: cache_check - changed_when: false - failed_when: false - -- name: Set cache refresh fact - set_fact: - nspawn_image_cache_refresh: true - when: - - cache_check.rc != 0 - -- name: Legacy image url fetch - block: - - name: Create legacy image URL fetch - copy: - src: "lxc-image-fetch-url.py" - dest: "/usr/local/bin/lxc-image-fetch-url" - owner: "root" - group: "root" - mode: "0755" - - - name: Fetch legacy container image url - command: "/usr/local/bin/lxc-image-fetch-url {{ nspawn_cache_map.distro }} {{ nspawn_cache_map.release }} {{ nspawn_cache_map.arch }} {{ nspawn_cache_default_variant }}" - register: legacy_image_url - retries: 3 - delay: 1 - until: legacy_image_url is success - - - name: Set nspawn cache fact(s) (legacy) - set_fact: - nspawn_hosts_container_image_url: "{{ legacy_image_url.stdout.strip() }}" - when: - - nspawn_hosts_container_image_download_legacy | bool - -- name: Pre-stage the nspawn image on the system - get_url: - url: "{{ nspawn_hosts_container_image_url }}" - dest: "/tmp/{{ nspawn_hosts_container_image_url | basename }}" - validate_certs: "{{ nspawn_hosts_validate_certs | bool }}" - force: true - register: prestage_image - async: 300 - poll: 0 - tags: - - skip_ansible_lint diff --git a/tasks/nspawn_networking.yml b/tasks/nspawn_networking.yml deleted file mode 100644 index a0ce24b..0000000 --- a/tasks/nspawn_networking.yml +++ /dev/null @@ -1,242 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Check for aa-profile - stat: - path: /etc/apparmor.d/usr.sbin.dnsmasq - register: aa_profile - -- name: Set dnsmasq aa profile to complain - command: "aa-complain /etc/apparmor.d/usr.sbin.dnsmasq" - when: - - aa_profile.stat.exists | bool - -- name: Add proxies when needed - block: - - name: Create machined proxy override unit directories - file: - path: "/etc/systemd/system/{{ item }}" - owner: root - group: root - mode: '0755' - state: directory - with_items: - - systemd-machined.service.d - - systemd-importd.service.d - - - name: Drop the machined proxy override units - template: - src: systemd-proxy-unit.conf.j2 - dest: /etc/systemd/system/{{ item }}/proxy.conf - owner: root - group: root - mode: '0644' - with_items: - - systemd-machined.service.d - - systemd-importd.service.d - when: - - (deployment_environment_variables | default({})).keys() | length > 0 - -- name: Load override systemd-nspawn@ - template: - src: systemd-nspawn@.service.j2 - dest: /etc/systemd/system/systemd-nspawn@.service - notify: - - Reload systemd-daemon - -- name: Run the systemd service role - include_role: - name: systemd_service - vars: - systemd_user_name: "root" - systemd_group_name: "root" - systemd_tempd_prefix: machine - systemd_slice_name: machine - systemd_lock_path: /var/lock/machine - systemd_services: - - service_name: "nspawn-macvlan" - program_sandboxing: - PrivateTmp: True - PrivateDevices: True - config_overrides: - Unit: - After: network-online.target - Before: systemd-networkd.service - PartOf: systemd-networkd.service - Description: nspawn host macvlan integrations - Wants: network-online.target - Service: - RemainAfterExit: yes - service_type: oneshot - execstarts: |- - {%- set start_commands = [] %} - {%- set seen_start_interfaces = [] %} - {%- for key, value in nspawn_combined_networks.items() %} - {%- if value.interface is defined %} - {%- set interface = value.interface %} - {%- set mv_interface = value.interface %} - {%- else %} - {%- set interface = value.bridge.split('br-')[-1] %} - {%- set mv_interface = 'mv-' + interface %} - {%- endif %} - {%- if value.bridge not in seen_start_interfaces %} - {%- if value.private_device | default(false) | bool %} - {%- set _ = start_commands.append('-/sbin/ip link add dev ' + value.bridge + ' type dummy') %} - {%- set _ = start_commands.append('-/sbin/ip link set dev ' + value.bridge + ' up') %} - {%- endif %} - {%- set interface_from_ansible = 'ansible_' + value.bridge | replace('-', '_') %} - {%- set interface_data = hostvars[inventory_hostname][interface_from_ansible] | default({'type': none}) %} - {%- if interface_data['type'] == 'bridge' %} - {%- set _ = start_commands.append('-/sbin/ip link add dev veth-' + interface + '1 type veth peer name veth-' + interface + '2') %} - {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 up') %} - {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 mtu ' ~ (interface_data["mtu"] | default(1500))) %} - {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '2 up') %} - {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '2 mtu ' ~ (interface_data["mtu"] | default(1500))) %} - {%- set _ = start_commands.append('-/sbin/ip link set dev veth-' + interface + '1 master ' + value.bridge) %} - {%- set _ = start_commands.append('-/sbin/ip link add ' + mv_interface + ' link veth-' + interface + '2 mtu ' ~ (interface_data["mtu"] | default(1500)) ~ ' type macvlan mode ' + value.macvlan_mode | default(nspawn_macvlan_mode)) %} - {%- set _ = start_commands.append('-/sbin/ip link set dev ' + mv_interface + ' up') %} - {%- else %} - {%- set _ = start_commands.append('-/sbin/ip link add ' + mv_interface + ' link ' + value.bridge + ' mtu ' ~ (interface_data["mtu"] | default(1500)) ~ ' type macvlan mode ' + value.macvlan_mode | default(nspawn_macvlan_mode)) %} - {%- set _ = start_commands.append('-/sbin/ip link set dev ' + mv_interface + ' up') %} - {% if hostvars[inventory_hostname][key.split('_')[0] + '_cidr'] is defined and (value.address is undefined) %} - {% set net_cidr = hostvars[inventory_hostname][key.split('_')[0] + '_cidr'] %} - {% set _ = start_commands.append('-/sbin/ip route add ' ~ net_cidr ~ ' dev ' ~ (value.routed_interface | default(nspawn_primary_interface)) ~ ' metric 100 proto kernel scope link table local') %} - {% elif (value.address is defined) and ((interface_data['ipv4'] | default({'address': none}))['address'] != value.address) and ((value.host_only | default(false)) | bool) %} - {% set net_cidr = (value.address ~ '/' ~ (value.netmask | default('32'))) %} - {% set _ = start_commands.append('-/sbin/ip address add ' ~ net_cidr ~ ' dev ' ~ mv_interface ~ ' scope host noprefixroute') %} - {% set _ = start_commands.append('-/sbin/ip route add ' ~ (net_cidr | ipaddr('network')) ~ '/' ~ (value.netmask | default('32')) ~ ' dev ' ~ mv_interface ~ ' metric 100 proto kernel scope link table local') %} - {%- endif %} - {%- endif %} - {%- endif %} - {%- endfor %} - {{ start_commands }} - enabled: yes - state: started - tags: - - network-config - - systemd-networkd - -- name: Run the systemd-networkd role - include_role: - name: systemd_networkd - vars: - systemd_networkd_prefix: "nspawn_host" - systemd_run_networkd: true - systemd_interface_cleanup: true - systemd_netdevs: |- - {% set seen_netdevs = [] %} - {% set _netdevs = [] %} - {% for _, value in (nspawn_networks | combine(container_extra_networks)).items() %} - {% set netname = value.interface | default('mv-' + value.bridge.split('br-')[-1]) %} - {% set _netdev = {'NetDev': {'Name': netname, 'Kind': 'macvlan'}, 'MACVLAN': {'Mode': 'bridge'}} %} - {% if netname not in seen_netdevs %} - {% set _ = _netdevs.append(_netdev) %} - {% set _ = seen_netdevs.append(netname) %} - {% endif %} - {% endfor %} - {{ _netdevs | sort(attribute='NetDev.Name') }} - systemd_networks: |- - {% set seen_networks = [] %} - {% set _networks = [] %} - {# All nspawn_networks and container_extra_networks will be iterated over. #} - {# If a device is found, a networkd config will be generated for it. #} - {% for _, value in (nspawn_networks | combine(container_extra_networks)).items() %} - {% set netname = value.interface | default('mv-' + value.bridge.split('br-')[-1]) %} - {% set _network = {'interface': netname} %} - {% if (not (value.host_only | default(false)) | bool) %} - {% if netname not in seen_networks %} - {% set _ = seen_networks.append(netname) %} - {% if value.address is defined %} - {% set _ = _network.__setitem__('address', value.address) %} - {% if (value.netmask is defined) and (_network.address != 'dhcp') %} - {% set _ = _network.__setitem__('netmask', value.netmask) %} - {% set prefix = (value.address + '/' + value.netmask) | ipaddr('prefix') %} - {% set _ = _network.__setitem__('address', [value.address + '/' + prefix | string]) %} - {% endif %} - {% endif %} - {% set _ = _network.__setitem__('usedns', (value.usedns | default(true) | bool) | ternary('yes', 'no')) %} - {% set _ = _network.__setitem__('static_routes', value.static_routes | default([])) %} - {% if value.gateway is defined %} - {% set _ = _network.__setitem__('gateway', value.gateway) %} - {% endif %} - {% set _ = _network.__setitem__('mtu', value.mtu | default(1500 | string)) %} - {% set _ = _network.__setitem__('config_overrides', {'Network': {'IPForward': 'yes', 'IPMasquerade': 'yes'}, 'Link': {'ARP': 'yes'}}) %} - {% set _ = _networks.append(_network) %} - {% endif %} - {% endif %} - {% endfor %} - {{ _networks | sort(attribute='interface') }} - tags: - - network-config - - systemd-networkd - -- name: Create dnsmasq config(s) - template: - src: "dnsmasq-config.conf.j2" - dest: "/etc/dnsmasq.d/dnsmasq-{{ 'mv-' + item.value.bridge.split('br-')[-1] }}.conf" - with_dict: "{{ nspawn_combined_networks }}" - when: - - item.value.enable_dhcp | default(false) | bool - notify: - - Enable network dnsmasq service - -- name: Run the systemd service role - include_role: - name: systemd_service - vars: - systemd_user_name: "root" - systemd_group_name: "root" - systemd_tempd_prefix: machine - systemd_slice_name: machine - systemd_lock_path: /var/lock/machine - systemd_CPUAccounting: true - systemd_BlockIOAccounting: true - systemd_MemoryAccounting: true - systemd_TasksAccounting: true - systemd_services: - - service_name: "dnsmasq-{{ 'mv-' + dnsmasq_var.value.bridge.split('br-')[-1] }}" - program_sandboxing: - PrivateTmp: True - PrivateDevices: True - config_overrides: - Unit: - Description: networking-post-up - After: - ? network-online.target - ? systemd-networkd.service - ? nspawn-macvlan.service - PartOf: systemd-networkd.service - Wants: network-online.target - Service: - RemainAfterExit: yes - ExecStartPre: "-{{ nspawn_network_utils[ansible_pkg_mgr]['iptables'] }} -t nat -A POSTROUTING -s {{ dnsmasq_var.value.address }}/{{ (dnsmasq_var.value.address | string + '/' + dnsmasq_var.value.netmask | string) | ipaddr('prefix') }} ! -d {{ dnsmasq_var.value.address }}/{{ (dnsmasq_var.value.address | string + '/' + dnsmasq_var.value.netmask | string) | ipaddr('prefix') }} -j MASQUERADE" - ExecStopPost: "-{{ nspawn_network_utils[ansible_pkg_mgr]['iptables'] }} -t nat -D POSTROUTING -s {{ dnsmasq_var.value.address }}/{{ (dnsmasq_var.value.address | string + '/' + dnsmasq_var.value.netmask | string) | ipaddr('prefix') }} ! -d {{ dnsmasq_var.value.address }}/{{ (dnsmasq_var.value.address | string + '/' + dnsmasq_var.value.netmask | string) | ipaddr('prefix') }} -j MASQUERADE" - PIDFile: /run/run/nspawn-{{ dnsmasq_var.value.bridge }}-dnsmasq.pid - execstarts: - - "/usr/sbin/dnsmasq --keep-in-foreground --conf-file=/etc/dnsmasq.d/dnsmasq-{{ 'mv-' + dnsmasq_var.value.bridge.split('br-')[-1] }}.conf" - execstops: - - "-/usr/bin/killall -u systemd-network --regexp ^dnsmasq" - enabled: yes - state: started - when: - - dnsmasq_var.value.enable_dhcp | default(false) | bool - - dnsmasq_var.value.address is defined - - dnsmasq_var.value.netmask is defined - with_dict: "{{ nspawn_combined_networks }}" - loop_control: - loop_var: dnsmasq_var - tags: - - network-config - - systemd-service diff --git a/tasks/nspawn_volume.yml b/tasks/nspawn_volume.yml deleted file mode 100644 index 691c036..0000000 --- a/tasks/nspawn_volume.yml +++ /dev/null @@ -1,130 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Check machinectl mount point - command: mountpoint /var/lib/machines - failed_when: false - changed_when: false - register: machinectl_mount - -- name: Set the machinectl limit - shell: | - machinectl set-limit {{ nspawn_host_machine_volume_size }} - truncate -s '>{{ nspawn_host_machine_volume_size }}' /var/lib/machines.raw - changed_when: false - register: machines_create - args: - executable: /bin/bash - tags: - - skip_ansible_lint - -- name: Systemd machinectl mount - block: - - name: Format the machines sparse file - filesystem: - fstype: btrfs - dev: /var/lib/machines.raw - - - name: Create machines mount point - file: - path: "/var/lib/machines" - state: "directory" - recurse: true - - - name: Run the systemd service role - include_role: - name: systemd_service - vars: - systemd_user_name: "root" - systemd_group_name: "root" - systemd_tempd_prefix: machine - systemd_slice_name: machine - systemd_lock_path: /var/lock/machine - systemd_CPUAccounting: false - systemd_BlockIOAccounting: false - systemd_MemoryAccounting: false - systemd_TasksAccounting: false - systemd_services: - - service_name: "systemd-machined" - config_overrides: - Unit: - Description: "Virtual Machine and Container Registration Service" - Documentation: - ? "man:systemd-machined.service(8)" - ? "http://www.freedesktop.org/wiki/Software/systemd/machined" - Wants: "machine.slice" - After: "machine.slice" - Service: - BusName: "org.freedesktop.machine1" - CapabilityBoundingSet: "CAP_KILL CAP_SYS_PTRACE CAP_SYS_ADMIN CAP_SETGID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE CAP_CHOWN CAP_FOWNER CAP_FSETID" - WatchdogSec: "3min" - execstarts: - - "/lib/systemd/systemd-machined" - enabled: yes - state: started - tags: - - machines-config - - systemd-service - - - name: Run the systemd mount role - include_role: - name: systemd_mount - vars: - systemd_mounts: - - what: "/var/lib/machines.raw" - where: "/var/lib/machines" - options: "loop,defaults,noatime,nodiratime,compress=lzo,commit=120,{{ (ansible_kernel is version('4.5', '>=')) | ternary('space_cache=v2', 'space_cache') }}" - type: "btrfs" - state: 'started' - enabled: true - tags: - - systemd-mount - - machines-config - when: - - machinectl_mount.rc != 0 - -- meta: flush_handlers - -- name: Update quota system and group limits - block: - - name: Disable|Enable the machinectl quota system - command: "btrfs quota {{ nspawn_host_machine_quota_disabled | bool | ternary('disable', 'enable') }} /var/lib/machines" - changed_when: false - - - name: Set the qgroup size|compression limits on machines - command: "btrfs qgroup limit {{ item }} /var/lib/machines" - changed_when: false - with_items: - - "-e {{ nspawn_host_qgroup_space_limit }}" - - "-c {{ nspawn_host_qgroup_compression_limit }}" - when: - - not nspawn_host_machine_quota_disabled | bool - rescue: - - name: Notice regarding quota system - debug: - msg: >- - The machinectl quota system could not be setup. Check the system to - for qutoa system availability otherwise disable it by setting - `nspawn_host_machine_quota_disabled` to true. - -# NOTE(cloudnull): Because the machines mount may be a manually created sparse -# file we run an online resize to ensure the machines mount is -# the size we expect. -- name: Ensure the machines fs is sized correctly - command: "btrfs filesystem resize max /var/lib/machines" - changed_when: false - failed_when: false - when: - - machines_create is changed diff --git a/templates/dnsmasq-config.conf.j2 b/templates/dnsmasq-config.conf.j2 deleted file mode 100644 index e824ebd..0000000 --- a/templates/dnsmasq-config.conf.j2 +++ /dev/null @@ -1,16 +0,0 @@ -# {{ ansible_managed }} - -user=systemd-network -listen-address={{ item.value.address }} -dhcp-range={{ item.key }},{{ item.value.dhcp_range }},24h -dhcp-lease-max=128 -except-interface=lo -interface={{ 'mv-' + item.value.bridge.split('br-')[-1] }} -dhcp-leasefile=/var/lib/misc/nspawn-{{ item.value.bridge }}-dnsmasq.leases -strict-order -bind-interfaces -no-hosts -no-negcache -domain-needed -bogus-priv -no-poll diff --git a/templates/prep-scripts/_container_sys_setup.sh.j2 b/templates/prep-scripts/_container_sys_setup.sh.j2 deleted file mode 100644 index 91d18a8..0000000 --- a/templates/prep-scripts/_container_sys_setup.sh.j2 +++ /dev/null @@ -1,61 +0,0 @@ - -# System containers will require mount points for the following -mkdir -p /dev -mkdir -p /proc -mkdir -p /sys/fs/cgroup -mkdir -p /dev/pts -mkdir -p /proc/self/fd - -# In order for the package manager to function /dev/null, /dev/random and -# /dev/urandom must exist. This is is being run here because some images do not -# create /dev/null by default. -[ ! -e /dev/null ] && mknod -m 0666 /dev/null c 1 3 -[ ! -e /dev/random ] && mknod -m 0666 /dev/random c 1 8 -[ ! -e /dev/urandom ] && mknod -m 0666 /dev/urandom c 1 9 - -for i in {0..5}; do - [ ! -e "/dev/pts/$i" ] && mknod -m 0666 "/dev/pts/$i" c 136 $i -done -[ ! -e /dev/pts/ptmx ] && mknod -m 0666 /dev/pts/ptmx c 5 2 - -[ ! -e /dev/fd ] && ln -s /proc/self/fd /dev/fd -for i in {0..2}; do - ln -sf /dev/pts/0 /dev/fd/$i -done - -#gnupg requires this -mkdir -p /root/.gnupg - -# Create the directory where local facts will be stored -mkdir -p /etc/ansible/facts.d - -# Create the backups directory -mkdir -p /var/backup - -# Create networkd directory -mkdir -p /etc/systemd/network - -# Remove the journal directory -rm -rf /var/log/journal || true - -# Create the cache resolvers -rm /etc/resolv.conf || true -{% for resolver in nspawn_cache_prep_dns %} -echo "nameserver {{ resolver }}" >> /etc/resolv.conf -{% endfor %} - -rm /etc/machine-id || true -rm /var/lib/dbus/machine-id || true -rm /etc/sysctl.d/* || true - -mkdir -p /root/.ssh -chmod 700 /root/.ssh - -mkdir -p /var/lib/empty -chmod -R 755 /var/lib/empty - -if [[ -e "/etc/securetty" ]]; then - chmod 600 /etc/securetty -fi - -chage -I -1 -d -1 -m 0 -M 99999 -E -1 root || true diff --git a/templates/prep-scripts/nspawn_debian_prep.sh.j2 b/templates/prep-scripts/nspawn_debian_prep.sh.j2 deleted file mode 100644 index 4b60bfe..0000000 --- a/templates/prep-scripts/nspawn_debian_prep.sh.j2 +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2018, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# {{ ansible_managed }} - -set -e - -{{ nspawn_cache_prep_pre_commands }} - -{% include 'templates/prep-scripts/_container_sys_setup.sh.j2' %} - - -# Ensure writeable /tmp in the chroot -chmod 1777 /tmp || true - -# Update base distribution -export DEBIAN_FRONTEND=noninteractive - -apt-get remove -y --purge snap* nspawn* lxd* resolvconf || true -apt-get update - -apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes eatmydata -export LD_PRELOAD=/usr/lib/{{ ansible_architecture }}-linux-gnu/libeatmydata.so - -apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes {{ nspawn_container_distro_required_packages | join(' ') }} -apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes {{ nspawn_container_distro_packages | join(' ') }} -apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -apt-get clean -rm /var/cache/apt/archives/lock || true - -rm -f /usr/bin/python || true -ln -s /usr/bin/python2.7 /usr/bin/python - -for action in disable; do - systemctl ${action} resolvconf.service || true - systemctl ${action} systemd-networkd-resolvconf-update.path || true - systemctl ${action} systemd-networkd-resolvconf-update.service || true - systemctl ${action} ssh.service || true -done - -systemctl enable systemd-hostnamed.service -systemctl enable systemd-networkd.service -systemctl enable systemd-resolved.service -ln -sf /var/run/systemd/resolve/resolv.conf /etc/resolv.conf - -userdel --force --remove debian || true - -#restore original /tmp permissions -chmod 0755 /tmp || true - -{{ nspawn_cache_prep_post_commands }} diff --git a/templates/prep-scripts/nspawn_ubuntu_prep.sh.j2 b/templates/prep-scripts/nspawn_ubuntu_prep.sh.j2 deleted file mode 100644 index 4f589d9..0000000 --- a/templates/prep-scripts/nspawn_ubuntu_prep.sh.j2 +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2018, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# {{ ansible_managed }} - -set -e - -{{ nspawn_cache_prep_pre_commands }} - -{% include 'templates/prep-scripts/_container_sys_setup.sh.j2' %} - -# Update base distribution -export DEBIAN_FRONTEND=noninteractive - -apt-get remove -y --purge snap* nspawn* lxd* resolvconf || true -apt-get update - -apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes eatmydata -export LD_PRELOAD=/usr/lib/{{ ansible_architecture }}-linux-gnu/libeatmydata.so - -apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes {{ nspawn_container_distro_required_packages | join(' ') }} -apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes {{ nspawn_container_distro_packages | join(' ') }} -apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -apt-get clean -rm /var/cache/apt/archives/lock || true - -rm -f /usr/bin/python || true -ln -s /usr/bin/python2.7 /usr/bin/python - -for action in disable; do - systemctl ${action} resolvconf.service || true - systemctl ${action} systemd-networkd-resolvconf-update.path || true - systemctl ${action} systemd-networkd-resolvconf-update.service || true - systemctl ${action} ssh.service || true -done - -systemctl enable systemd-hostnamed.service -systemctl enable systemd-networkd.service -systemctl enable systemd-resolved.service -ln -sf /var/run/systemd/resolve/resolv.conf /etc/resolv.conf - -userdel --force --remove ubuntu || true - -{{ nspawn_cache_prep_post_commands }} diff --git a/templates/systemd-journald-nspawn_host.conf.j2 b/templates/systemd-journald-nspawn_host.conf.j2 deleted file mode 100644 index ea412a2..0000000 --- a/templates/systemd-journald-nspawn_host.conf.j2 +++ /dev/null @@ -1,5 +0,0 @@ -# {{ ansible_managed }} - -[Journal] -Storage=persistent -Compress=yes diff --git a/templates/systemd-nspawn@.service.j2 b/templates/systemd-nspawn@.service.j2 deleted file mode 100644 index b3f9a43..0000000 --- a/templates/systemd-nspawn@.service.j2 +++ /dev/null @@ -1,58 +0,0 @@ -# {{ ansible_managed }} - -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Container %I -Documentation=man:systemd-nspawn(1) -PartOf=machines.target -Before=machines.target -After=network.target -After=network-online.target -After=systemd-networkd.service -After=systemd-resolved.service -After=nspawn-macvlan.service -Wants=network-online.target - -[Service] -ExecStart=/usr/bin/systemd-nspawn --keep-unit --boot --link-journal=try-host --private-network {{ ((nspawn_systemd_version | int) > 219) | ternary('--settings=override --machine=%I', '--machine=%I') }} -KillMode=mixed -Type=notify -RestartForceExitStatus=133 -SuccessExitStatus=133 -Slice=machine.slice -Delegate=yes -TasksMax=16384 - -# Enforce a strict device policy, similar to the one nspawn configures -# when it allocates its own scope unit. Make sure to keep these -# policies in sync if you change them! -DevicePolicy=strict -DeviceAllow=/dev/null rwm -DeviceAllow=/dev/zero rwm -DeviceAllow=/dev/full rwm -DeviceAllow=/dev/random rwm -DeviceAllow=/dev/urandom rwm -DeviceAllow=/dev/tty rwm -DeviceAllow=/dev/net/tun rwm -DeviceAllow=/dev/pts/ptmx rw -DeviceAllow=char-pts rw - -# nspawn itself needs access to /dev/loop-control and /dev/loop, to -# implement the --image= option. Add these here, too. -DeviceAllow=/dev/loop-control rw -DeviceAllow=block-loop rw -DeviceAllow=block-blkext rw - -# nspawn can set up LUKS encrypted loopback files, in which case it needs -# access to /dev/mapper/control and the block devices /dev/mapper/*. -DeviceAllow=/dev/mapper/control rw -DeviceAllow=block-device-mapper rw - -[Install] -WantedBy=machines.target diff --git a/templates/systemd-proxy-unit.conf.j2 b/templates/systemd-proxy-unit.conf.j2 deleted file mode 100644 index cd243e4..0000000 --- a/templates/systemd-proxy-unit.conf.j2 +++ /dev/null @@ -1,6 +0,0 @@ -# {{ ansible_managed }} - -[Service] -{% for key, value in (deployment_environment_variables | default({})).items() %} -Environment={{ key }}={{ value }} -{% endfor %} diff --git a/tests/ansible-role-requirements.yml b/tests/ansible-role-requirements.yml deleted file mode 100644 index 9bdb558..0000000 --- a/tests/ansible-role-requirements.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- name: apt_package_pinning - src: https://opendev.org/openstack/openstack-ansible-apt_package_pinning - scm: git - version: master -- name: pip_install - src: https://opendev.org/openstack/openstack-ansible-pip_install - scm: git - version: master -- name: systemd_service - src: https://opendev.org/openstack/ansible-role-systemd_service - scm: git - version: master -- name: systemd_service - src: https://opendev.org/openstack/ansible-role-systemd_networkd - scm: git - version: master -- name: systemd_service - src: https://opendev.org/openstack/ansible-role-systemd_mount - scm: git - version: master diff --git a/tests/files/container-file-copy-test.txt b/tests/files/container-file-copy-test.txt deleted file mode 100644 index 0a68a48..0000000 --- a/tests/files/container-file-copy-test.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test file to verify that the container cache file copy worked. \ No newline at end of file diff --git a/tests/inventory b/tests/inventory deleted file mode 100644 index 32a8738..0000000 --- a/tests/inventory +++ /dev/null @@ -1,2 +0,0 @@ -[all] -localhost ansible_connection=local physical_host=localhost diff --git a/tests/test.yml b/tests/test.yml deleted file mode 100644 index 15c5c54..0000000 --- a/tests/test.yml +++ /dev/null @@ -1,154 +0,0 @@ ---- -# Copyright 2015, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Playbook for role testing - hosts: localhost - connection: local - become: true - vars: - extra_host_package: iotop - extra_cache_package: lshw - bridges: [] - nspawn_networks: - nspawn_address: - bridge: "nspawn0" - private_device: true - enable_dhcp: true - dhcp_range: 10.100.101.2,10.100.101.129 - address: 10.100.101.1 - netmask: 255.255.255.0 - macvlan_mode: bridge - - pre_tasks: - - name: Show host facts - debug: - var: hostvars - - - name: First ensure apt cache is always refreshed - apt: - update_cache: yes - when: - - ansible_pkg_mgr == 'apt' - - - name: Ensure root ssh key - user: - name: "{{ ansible_env.USER | default('root') }}" - generate_ssh_key: "yes" - ssh_key_bits: 2048 - ssh_key_file: ".ssh/id_rsa" - - - name: Get root ssh key - slurp: - src: '~/.ssh/id_rsa.pub' - register: _root_ssh_key - - - name: Prepare container ssh key fact - set_fact: - nspawn_container_ssh_key: "{{ _root_ssh_key['content'] | b64decode }}" - - - name: Ensure extra host package is not installed - package: - name: "{{ extra_host_package }}" - state: absent - - roles: - - role: "nspawn_hosts" - nspawn_container_base_name: "test-container" - nspawn_container_cache_files: - - src: files/container-file-copy-test.txt - dest: /tmp/file-copied-from-deployment-host.txt - nspawn_hosts_extra_distro_packages: - - "{{ extra_host_package }}" - nspawn_container_extra_distro_packages: - - "{{ extra_cache_package }}" - - post_tasks: - - name: Check for nspawn bridge - stat: - path: /sys/class/net/nspawn0/upper_mv-nspawn0 - changed_when: false - register: nspawn_interface_file - - - name: Check role functions - assert: - that: - - "nspawn_interface_file.stat.exists" - - - name: Check dnsmasq is running - command: systemctl status dnsmasq-mv-nspawn0.service - changed_when: false - tags: - - skip_ansible_lint - - - name: Check for machines mount - command: "systemctl status var-lib-machines.mount" - changed_when: false - tags: - - skip_ansible_lint - - - name: Check dnsmasq is running - command: systemctl status dnsmasq-mv-nspawn0.service - changed_when: false - tags: - - skip_ansible_lint - - - name: Check for valid BTRFS file system - command: "btrfs filesystem show /var/lib/machines" - changed_when: false - - - name: Check for base container - command: "machinectl show-image test-container" - changed_when: false - - - name: Ensure images can be cloned - command: "machinectl clone test-container test1" - changed_when: false - - - name: Ensure images can be removed - command: "machinectl remove test1" - changed_when: false - - - name: Ensure images can be marked read-only - command: "machinectl read-only test-container yes" - changed_when: false - - - name: Get installation state of extra host package - package: - name: "{{ extra_host_package }}" - state: present - failed_when: - - extra_host_package_state.changed - register: extra_host_package_state - - - name: Check for extra package installed in lxc cache - find: - paths: "/var/lib/machines" - patterns: "{{ extra_cache_package }}" - recurse: yes - failed_when: - extra_cache_package_find.matched == 0 - register: extra_cache_package_find - - - name: Ensure a read-only image is read-only - file: - path: /var/lib/machines/test-container/test-file - state: touch - failed_when: - - read_only_test is success - register: read_only_test - - - name: Remove base image - command: "machinectl remove test-container" - changed_when: false diff --git a/tox.ini b/tox.ini deleted file mode 100644 index b1e4ce6..0000000 --- a/tox.ini +++ /dev/null @@ -1,88 +0,0 @@ -[tox] -minversion = 3.1 -skipsdist = True -envlist = docs,linters,functional -ignore_basepython_conflict = True - -[testenv] -basepython = python3 -usedevelop = True -install_command = - pip install -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages} -commands = - /usr/bin/find . -type f -name "*.pyc" -delete -passenv = - COMMON_TESTS_PATH - HOME - http_proxy - HTTP_PROXY - https_proxy - HTTPS_PROXY - no_proxy - NO_PROXY - TESTING_BRANCH - TESTING_HOME - USER -whitelist_externals = - bash -setenv = - PYTHONUNBUFFERED=1 - ROLE_NAME=nspawn_hosts - TEST_IDEMPOTENCE=false - VIRTUAL_ENV={envdir} - WORKING_DIR={toxinidir} - -[testenv:docs] -deps = -r{toxinidir}/doc/requirements.txt -commands= - bash -c "rm -rf doc/build" - doc8 doc - sphinx-build -W --keep-going -b html doc/source doc/build/html - -[doc8] -# Settings for doc8: -extensions = .rst - -[testenv:releasenotes] -deps = -r{toxinidir}/doc/requirements.txt -commands = - sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html - -# environment used by the -infra templated docs job -[testenv:venv] -commands = - {posargs} - -[testenv:pep8] -commands = - bash -c "{toxinidir}/tests/common/test-pep8.sh" - -[flake8] -# Ignores the following rules due to how ansible modules work in general -# F403 'from ansible.module_utils.basic import *' used; -# unable to detect undefined names -ignore=F403 - -[testenv:bashate] -commands = - bash -c "{toxinidir}/tests/common/test-bashate.sh" - -[testenv:ansible-syntax] -commands = - bash -c "{toxinidir}/tests/common/test-ansible-syntax.sh" - -[testenv:ansible-lint] -commands = - bash -c "{toxinidir}/tests/common/test-ansible-lint.sh" - -[testenv:functional] -commands = - bash -c "{toxinidir}/tests/common/test-ansible-functional.sh" - -[testenv:linters] -commands = - bash -c "{toxinidir}/tests/common/test-ansible-env-prep.sh" - {[testenv:pep8]commands} - {[testenv:bashate]commands} - {[testenv:ansible-lint]commands} - {[testenv:ansible-syntax]commands} diff --git a/vars/debian-10.yml b/vars/debian-10.yml deleted file mode 100644 index 90a9aea..0000000 --- a/vars/debian-10.yml +++ /dev/null @@ -1,67 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -_nspawn_hosts_container_image_url: "https://nspawn.org/storage/debian/buster/tar/image.tar.xz" - -_nspawn_hosts_distro_packages: - - bridge-utils - - btrfs-tools - - dbus - - dnsmasq - - git - - iptables - - irqbalance - - psmisc - - systemd-container - -_nspawn_container_distro_required_packages: - - gnupg - -_nspawn_container_distro_packages: - - apt-transport-https - - ca-certificates - - cron - - dbus - - debianutils - - gcc - - iproute2 - - iputils-ping - - libnss-resolve - - libpython2.7 - - libpython3.7 - - locales - - netbase - - openssh-server - - openssl - - python2.7 - - python-apt - - python-dev - - rsync - - sudo - - systemd - - tar - - tzdata - - wget - -_nspawn_cache_map: - distro: debian - arch: "{{ nspawn_architecture_mapping.get(ansible_architecture) }}" - release: buster - -_nspawn_copy_from_host: - - /etc/apt/sources.list - - /etc/apt/apt.conf.d/ - - /etc/apt/preferences.d/ - - /etc/apt/trusted.gpg.d diff --git a/vars/debian-9.yml b/vars/debian-9.yml deleted file mode 100644 index 3713e0f..0000000 --- a/vars/debian-9.yml +++ /dev/null @@ -1,68 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -_nspawn_hosts_container_image_url: "https://github.com/debuerreotype/docker-debian-artifacts/raw/dist-{{ nspawn_cache_map.arch }}/{{ ansible_distribution_release }}/rootfs.tar.xz" - -_nspawn_hosts_distro_packages: - - bridge-utils - - btrfs-tools - - dbus - - dnsmasq - - git - - iptables - - irqbalance - - psmisc - - pxz - - systemd-container - -_nspawn_container_distro_required_packages: - - gnupg - -_nspawn_container_distro_packages: - - apt-transport-https - - ca-certificates - - cron - - dbus - - debianutils - - gcc - - iproute2 - - iputils-ping - - libnss-resolve - - libpython2.7 - - libpython3.5 - - locales - - netbase - - openssh-server - - openssl - - python2.7 - - python-apt - - python-dev - - rsync - - sudo - - systemd - - tzdata - - tar - - wget - -_nspawn_cache_map: - distro: debian - arch: "{{ nspawn_architecture_mapping.get(ansible_architecture) }}" - release: stretch - -_nspawn_copy_from_host: - - /etc/apt/sources.list - - /etc/apt/apt.conf.d/ - - /etc/apt/preferences.d/ - - /etc/apt/trusted.gpg.d diff --git a/vars/main.yml b/vars/main.yml deleted file mode 100644 index 1505184..0000000 --- a/vars/main.yml +++ /dev/null @@ -1,42 +0,0 @@ ---- -# Copyright 2018, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Mappings from Ansible reported architecture to distro release architecture -nspawn_architecture_mapping: - x86_64: amd64 - ppc64le: ppc64el - s390x: s390x - armv7l: armhf - -# A combined hash of all networks to be used within a deployment. -nspawn_combined_networks: "{{ container_networks | combine(container_extra_networks) | combine(nspawn_networks) }}" - -nspawn_network_utils: - apt: - iptables: /sbin/iptables - ip: /sbin/ip - ethtool: /sbin/ethtool - yum: - iptables: /usr/sbin/iptables - ip: /usr/sbin/ip - ethtool: /usr/sbin/ethtool - zypper: - iptables: /usr/sbin/iptables - ip: /sbin/ip - ethtool: /sbin/ethtool - emerge: - iptables: /usr/sbin/iptables - ip: /bin/ip - ethtool: /usr/sbin/ethtool diff --git a/vars/ubuntu-18.04.yml b/vars/ubuntu-18.04.yml deleted file mode 100644 index 6c8ee4f..0000000 --- a/vars/ubuntu-18.04.yml +++ /dev/null @@ -1,65 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -_nspawn_hosts_container_image_url: "http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04-base-{{ nspawn_cache_map.arch }}.tar.gz" - -_nspawn_hosts_distro_packages: - - bridge-utils - - btrfs-progs - - dbus - - dnsmasq - - git - - iptables - - irqbalance - - psmisc - - systemd-container - -_nspawn_container_distro_required_packages: - - gnupg - -_nspawn_container_distro_packages: - - apt-transport-https - - ca-certificates - - cron - - dbus - - debianutils - - gcc - - iproute2 - - iputils-ping - - libnss-resolve - - libpython3.6 - - locales - - netbase - - openssh-server - - openssl - - python-apt - - python-dev - - rsync - - sudo - - systemd - - tar - - tzdata - - wget - -_nspawn_cache_map: - distro: ubuntu - arch: "{{ nspawn_architecture_mapping.get(ansible_architecture) }}" - release: bionic - -_nspawn_copy_from_host: - - /etc/apt/sources.list - - /etc/apt/apt.conf.d/ - - /etc/apt/preferences.d/ - - /etc/apt/trusted.gpg.d diff --git a/vars/ubuntu-20.04.yml b/vars/ubuntu-20.04.yml deleted file mode 100644 index 1df7f36..0000000 --- a/vars/ubuntu-20.04.yml +++ /dev/null @@ -1,65 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -_nspawn_hosts_container_image_url: "http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-{{ nspawn_cache_map.arch }}.tar.gz" - -_nspawn_hosts_distro_packages: - - bridge-utils - - btrfs-progs - - dbus - - dnsmasq - - git - - iptables - - irqbalance - - psmisc - - systemd-container - -_nspawn_container_distro_required_packages: - - gnupg - -_nspawn_container_distro_packages: - - apt-transport-https - - ca-certificates - - cron - - dbus - - debianutils - - gcc - - iproute2 - - iputils-ping - - libnss-resolve - - libpython3.6 - - locales - - netbase - - openssh-server - - openssl - - python-apt - - python-dev - - rsync - - sudo - - systemd - - tar - - tzdata - - wget - -_nspawn_cache_map: - distro: ubuntu - arch: "{{ nspawn_architecture_mapping.get(ansible_architecture) }}" - release: bionic - -_nspawn_copy_from_host: - - /etc/apt/sources.list - - /etc/apt/apt.conf.d/ - - /etc/apt/preferences.d/ - - /etc/apt/trusted.gpg.d diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml deleted file mode 100644 index e0806a0..0000000 --- a/zuul.d/jobs.yaml +++ /dev/null @@ -1,45 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- job: - name: openstack-ansible-nspawn-container-create - parent: openstack-ansible-cross-repo-functional - required-projects: - - name: openstack/openstack-ansible-nspawn_container_create - vars: - tox_env: functional - osa_test_repo: openstack/openstack-ansible-nspawn_container_create - -- job: - name: openstack-ansible-nspawn-container-create-debian-buster - parent: openstack-ansible-nspawn-container-create - nodeset: debian-buster - -- job: - name: openstack-ansible-nspawn-container-create-ubuntu-bionic - parent: openstack-ansible-nspawn-container-create - nodeset: ubuntu-bionic - -- job: - name: openstack-ansible-nspawn-container-create-ubuntu-focal - parent: openstack-ansible-nspawn-container-create - nodeset: ubuntu-focal - -- job: - name: openstack-ansible-integrated-deploy-nspawn - parent: openstack-ansible-integrated-deploy-aio - voting: false - vars: - scenario: aio_nspawn diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml deleted file mode 100644 index ed543d9..0000000 --- a/zuul.d/project.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -# Copyright 2017, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- project: - templates: - - openstack-ansible-role-jobs - - check-requirements - - publish-openstack-docs-pti - - release-notes-jobs-python3 - check: - jobs: - - openstack-ansible-nspawn-container-create-debian-buster - - openstack-ansible-nspawn-container-create-ubuntu-bionic - - openstack-ansible-nspawn-container-create-ubuntu-focal: - voting: false - - openstack-ansible-functional-centos-8: - voting: false - gate: - jobs: - - openstack-ansible-nspawn-container-create-debian-buster - - openstack-ansible-nspawn-container-create-ubuntu-bionic - - openstack-ansible-nspawn-container-create-ubuntu-focal: - voting: false - - openstack-ansible-functional-centos-8: - voting: false - - experimental: - jobs: - - openstack-ansible-integrated-deploy-nspawn