Retire openstack-chef-repo (step 3)
This repository is unused, retire it. This is step 3 for retiring a project per https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project Depends-On: https://review.openstack.org/599241 Change-Id: Ib2db06c9f591c59a8d57803bfee5c44772012e58
This commit is contained in:
parent
6d9a73e2e5
commit
5f5a010013
@ -1,11 +0,0 @@
|
||||
wfBM0OA4p1hsqM1tsRNCCFhcjDXP4lffgLvFNbTPgMjh6TZvLDHlrwiA41rqMzdI
|
||||
SOzSsyO9TBlcwfinbyJcObMpLklSv3wNJ6oWEpa1e78YL998RXx3zmMOoT/SEfWI
|
||||
ZFN/H5xe+YX4T8T3+W+rfjQH3GP0fTbNfOYtgDthsmtUF05LtBlgxxUXscGkG74D
|
||||
qDO6f3K97Dcd07QFeMorwvrIBkYDtTyU90HqR1aksMD06fpA2LSGfrLu1ykVUUlb
|
||||
rTi+O9tyMifSs9SLoJjnrDkeujh3UQXRr4vRwP9tkefEtbQE8OiRpRJ72kLPX2eE
|
||||
FQGQKjKCk3edAknp7RHhzk66GbUUzY/H+FAJfjFHycIR1rLAHxIbJFToH4dKGj9w
|
||||
jFkHxgnnGK8TPm7mwyrvo6obR8gBSbG+1xgMiA2/fNoLyuiSqtm21n/1/81QPKBc
|
||||
FllWAaA8xR6l2Ji8JPoJ705Msk6183ODeN//vn2JvwxacUL9HWqI6Gy2SsETQ3yW
|
||||
A6PzVVnKHpevco7TH9HhuhKIlpYbjWv4YMUlLAz/5PbbLiOJtDGB54o/6hQGqOP0
|
||||
3jscQ0ciPjpLgwvQmQJztrB/Uvq6Un2moPLLygwQK0TYSNmM5+BMnB00/aK++y7x
|
||||
mvymJcSxd48DBrA2NuFDhNBWwOcZSB1R/N50Vs/iq5I=
|
@ -1,16 +0,0 @@
|
||||
# See http://docs.opscode.com/config_rb_knife.html
|
||||
# for more information on knife configuration options
|
||||
|
||||
current_dir = File.dirname(__FILE__)
|
||||
log_level :info
|
||||
log_location STDOUT
|
||||
node_name 'nodienode'
|
||||
client_key "#{current_dir}/nodienode.pem"
|
||||
validation_client_name 'chef-validator'
|
||||
validation_key "#{current_dir}/validator.pem"
|
||||
chef_server_url 'https://api.opscode.com/organizations/my_awesome_org'
|
||||
cache_type 'BasicFile'
|
||||
cache_options(path: "#{ENV['HOME']}/.chef/checksums")
|
||||
cookbook_path ["#{current_dir}/../cookbooks",
|
||||
"#{current_dir}/../site-cookbooks"]
|
||||
knife[:secret_file] = "#{current_dir}/encrypted_data_bag_secret"
|
@ -1,9 +0,0 @@
|
||||
[local_phases]
|
||||
unit = 'berks vendor cookbooks'
|
||||
lint = 'cookstyle --display-cop-names --extra-details'
|
||||
syntax = "./scripts/json_check.sh"
|
||||
provision = "echo skipping"
|
||||
deploy = "echo skipping"
|
||||
smoke = "echo skipping"
|
||||
functional = "echo skipping"
|
||||
cleanup = "echo skipping"
|
19
.gitignore
vendored
19
.gitignore
vendored
@ -1,19 +0,0 @@
|
||||
.DS_Store
|
||||
.kitchen/
|
||||
.kitchen.local.yml
|
||||
.bundle
|
||||
.vagrant
|
||||
berks-cookbooks/
|
||||
Berksfile.lock
|
||||
clients/
|
||||
cookbooks/
|
||||
Gemfile.lock
|
||||
nodes/
|
||||
vms/
|
||||
.chef/nodienode.pem
|
||||
.chef/validator.pem
|
||||
.chef/local-mode-cache/
|
||||
.project
|
||||
.tox
|
||||
doc/build
|
||||
*.egg-info
|
@ -1,143 +0,0 @@
|
||||
---
|
||||
driver:
|
||||
name: dokken
|
||||
privileged: true
|
||||
chef_version: 14
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup
|
||||
- /lib/modules:/lib/modules:ro
|
||||
- /run/openvswitch:/run/openvswitch
|
||||
|
||||
transport:
|
||||
name: dokken
|
||||
|
||||
provisioner:
|
||||
name: dokken
|
||||
encrypted_data_bag_secret_key_path: .chef/encrypted_data_bag_secret
|
||||
|
||||
verifier:
|
||||
name: inspec
|
||||
|
||||
platforms:
|
||||
- name: ubuntu-16.04
|
||||
driver:
|
||||
image: dokken/ubuntu-16.04
|
||||
pid_one_command: /bin/systemd
|
||||
- name: centos-7
|
||||
platform: rhel
|
||||
driver:
|
||||
image: dokken/centos-7
|
||||
pid_one_command: /usr/lib/systemd/systemd
|
||||
|
||||
suites:
|
||||
- name: default
|
||||
driver:
|
||||
ports:
|
||||
- '80'
|
||||
- '8080'
|
||||
- '443'
|
||||
- '3460'
|
||||
- '3306'
|
||||
- '5672'
|
||||
- '5000'
|
||||
- '35357'
|
||||
- '8774'
|
||||
- '8776'
|
||||
- '9292'
|
||||
- '9696'
|
||||
- '8000'
|
||||
- '8003'
|
||||
- '8004'
|
||||
run_list:
|
||||
# run_list taken from roles/allinone.json
|
||||
- recipe[selinux::disabled]
|
||||
- recipe[openstack-common]
|
||||
- recipe[openstack-common::logging]
|
||||
- recipe[openstack-common::sysctl]
|
||||
- recipe[openstack-common::client]
|
||||
- recipe[openstack-ops-database::server]
|
||||
- recipe[openstack-ops-database::openstack-db]
|
||||
- recipe[openstack-ops-messaging::rabbitmq-server]
|
||||
- recipe[openstack-identity::server-apache]
|
||||
- recipe[openstack-identity::registration]
|
||||
- recipe[openstack-identity::openrc]
|
||||
- recipe[openstack-image::api]
|
||||
- recipe[openstack-image::registry]
|
||||
- recipe[openstack-image::identity_registration]
|
||||
- recipe[openstack-network::identity_registration]
|
||||
- recipe[openstack-network::ml2_core_plugin]
|
||||
- recipe[openstack-network::ml2_openvswitch]
|
||||
- recipe[openstack-network]
|
||||
- recipe[openstack-network::openvswitch]
|
||||
- recipe[openstack-network::_bridge_config_example]
|
||||
- recipe[openstack-network::plugin_config]
|
||||
- recipe[openstack-network::server]
|
||||
- recipe[openstack-network::l3_agent]
|
||||
- recipe[openstack-network::dhcp_agent]
|
||||
- recipe[openstack-network::metadata_agent]
|
||||
- recipe[openstack-network::openvswitch_agent]
|
||||
- recipe[openstack-compute::nova-setup]
|
||||
- recipe[openstack-compute::identity_registration]
|
||||
- recipe[openstack-compute::conductor]
|
||||
- recipe[openstack-compute::api-os-compute]
|
||||
- recipe[openstack-compute::api-metadata]
|
||||
- recipe[openstack-compute::placement_api]
|
||||
- recipe[openstack-compute::scheduler]
|
||||
- recipe[openstack-compute::vncproxy]
|
||||
- recipe[openstack-compute::compute]
|
||||
- recipe[openstack-compute::identity_registration]
|
||||
# NOTE: block-storage, orchestration, dashboard, etc. can be installed
|
||||
# but are not tested by tempest
|
||||
- recipe[openstack-block-storage::api]
|
||||
- recipe[openstack-block-storage::scheduler]
|
||||
- recipe[openstack-block-storage::volume_driver_lvm]
|
||||
- recipe[openstack-block-storage::volume]
|
||||
- recipe[openstack-block-storage::backup]
|
||||
- recipe[openstack-block-storage::identity_registration]
|
||||
- recipe[openstack-orchestration::engine]
|
||||
- recipe[openstack-orchestration::api]
|
||||
- recipe[openstack-orchestration::api-cfn]
|
||||
- recipe[openstack-orchestration::identity_registration]
|
||||
- recipe[openstack-image::image_upload]
|
||||
- recipe[openstack-dashboard::horizon]
|
||||
- recipe[openstack-dashboard::neutron-lbaas-dashboard]
|
||||
- recipe[openstack-integration-test::create_network]
|
||||
- recipe[openstack-integration-test::setup]
|
||||
- recipe[openstack-integration-test::run_tempest]
|
||||
verifier:
|
||||
inspec_tests:
|
||||
- test/tempest/default
|
||||
# from environments/allinone.json
|
||||
attributes:
|
||||
# Attributes copied from environments/integration.json
|
||||
apache:
|
||||
listen: []
|
||||
yum:
|
||||
epel:
|
||||
enabled: false
|
||||
openstack:
|
||||
is_release: true
|
||||
apt:
|
||||
update_apt_cache: true
|
||||
dashboard:
|
||||
server_hostname: localhost
|
||||
telemetry:
|
||||
conf:
|
||||
DEFAULT:
|
||||
meter_dispatchers: database
|
||||
mq:
|
||||
user: admin
|
||||
network:
|
||||
tun_network_bridge_interface: eth0
|
||||
conf:
|
||||
DEFAULT:
|
||||
service_plugins: router
|
||||
image:
|
||||
image_upload: true
|
||||
compute:
|
||||
conf:
|
||||
libvirt:
|
||||
cpu_type: none
|
||||
virt_type: qemu
|
||||
secret:
|
||||
key_path: /opt/kitchen/encrypted_data_bag_secret
|
@ -1,267 +0,0 @@
|
||||
---
|
||||
driver:
|
||||
name: vagrant
|
||||
|
||||
client_rb:
|
||||
treat_deprecation_warnings_as_errors: true
|
||||
resource_cloning: false
|
||||
|
||||
provisioner:
|
||||
name: chef_zero
|
||||
# You may wish to disable always updating cookbooks in CI or other testing
|
||||
# environments.
|
||||
# For example:
|
||||
# always_update_cookbooks: <%= !ENV['CI'] %>
|
||||
always_update_cookbooks: true
|
||||
product_name: chef
|
||||
product_version: 14
|
||||
# Copy secret to /tmp/kitchen on test VM. Kitchen tries to gather secrets
|
||||
# before any recipes had a chance to run -> we cannot use a recipe to put the
|
||||
# secrets file in place.
|
||||
encrypted_data_bag_secret_key_path: .chef/encrypted_data_bag_secret
|
||||
attributes:
|
||||
# Attributes copied from environments/multinode.json
|
||||
apache:
|
||||
listen: []
|
||||
yum:
|
||||
epel:
|
||||
enabled: false
|
||||
openstack:
|
||||
is_release: true
|
||||
apt:
|
||||
update_apt_cache: true
|
||||
bind_service:
|
||||
db:
|
||||
host: '192.168.101.60'
|
||||
mq:
|
||||
host: '192.168.101.60'
|
||||
main:
|
||||
identity:
|
||||
host: '0.0.0.0'
|
||||
admin:
|
||||
identity:
|
||||
host: '0.0.0.0'
|
||||
all:
|
||||
block-storage:
|
||||
host: '0.0.0.0'
|
||||
compute-api:
|
||||
host: '0.0.0.0'
|
||||
compute-metadata-api:
|
||||
host: '0.0.0.0'
|
||||
image_api:
|
||||
host: '0.0.0.0'
|
||||
image_registry:
|
||||
host: '0.0.0.0'
|
||||
network:
|
||||
host: '0.0.0.0'
|
||||
orchestration-api:
|
||||
host: '0.0.0.0'
|
||||
orchestration-api-cfn:
|
||||
host: '0.0.0.0'
|
||||
placement-api:
|
||||
host: '0.0.0.0'
|
||||
compute:
|
||||
conf:
|
||||
libvirt:
|
||||
cpu_type: none
|
||||
virt_type: qemu
|
||||
dashboard:
|
||||
server_hostname: controller.example.net
|
||||
endpoints:
|
||||
db:
|
||||
host: '192.168.101.60'
|
||||
mq:
|
||||
host: '192.168.101.60'
|
||||
admin:
|
||||
block-storage:
|
||||
host: '192.168.101.60'
|
||||
compute-api:
|
||||
host: '192.168.101.60'
|
||||
compute-metadata-api:
|
||||
host: '192.168.101.60'
|
||||
identity:
|
||||
host: '192.168.101.60'
|
||||
image_api:
|
||||
host: '192.168.101.60'
|
||||
image_registry:
|
||||
host: '192.168.101.60'
|
||||
network:
|
||||
host: '192.168.101.60'
|
||||
orchestration-api:
|
||||
host: '192.168.101.60'
|
||||
orchestration-api-cfn:
|
||||
host: '192.168.101.60'
|
||||
placement-api:
|
||||
host: '192.168.101.60'
|
||||
internal:
|
||||
block-storage:
|
||||
host: '192.168.101.60'
|
||||
compute-api:
|
||||
host: '192.168.101.60'
|
||||
compute-metadata-api:
|
||||
host: '192.168.101.60'
|
||||
identity:
|
||||
host: '192.168.101.60'
|
||||
image_api:
|
||||
host: '192.168.101.60'
|
||||
image_registry:
|
||||
host: '192.168.101.60'
|
||||
network:
|
||||
host: '192.168.101.60'
|
||||
orchestration-api:
|
||||
host: '192.168.101.60'
|
||||
orchestration-api-cfn:
|
||||
host: '192.168.101.60'
|
||||
placement-api:
|
||||
host: '192.168.101.60'
|
||||
public:
|
||||
block-storage:
|
||||
host: '192.168.101.60'
|
||||
compute-api:
|
||||
host: '192.168.101.60'
|
||||
compute-metadata-api:
|
||||
host: '192.168.101.60'
|
||||
identity:
|
||||
host: '192.168.101.60'
|
||||
image_api:
|
||||
host: '192.168.101.60'
|
||||
image_registry:
|
||||
host: '192.168.101.60'
|
||||
network:
|
||||
host: '192.168.101.60'
|
||||
orchestration-api:
|
||||
host: '192.168.101.60'
|
||||
orchestration-api-cfn:
|
||||
host: '192.168.101.60'
|
||||
placement-api:
|
||||
host: '192.168.101.60'
|
||||
image:
|
||||
image_upload: true
|
||||
memcached_servers: ['127.0.0.1:11211']
|
||||
mq:
|
||||
user: admin
|
||||
network:
|
||||
conf:
|
||||
DEFAULT:
|
||||
service_plugins: router
|
||||
ml2:
|
||||
tenant_network_types: 'vxlan'
|
||||
plugins:
|
||||
ml2_openvswitch:
|
||||
conf:
|
||||
ml2_type_vxlan:
|
||||
vni_ranges: '65537:69999'
|
||||
vxlan_group: '239.1.1.40'
|
||||
transport_url:
|
||||
rabbit_host: '192.168.101.60'
|
||||
tun_network_bridge_interface: 'eth2'
|
||||
secret:
|
||||
key_path: /tmp/kitchen/encrypted_data_bag_secret
|
||||
sysctl:
|
||||
net.ipv4.ip_forward: 1
|
||||
telemetry:
|
||||
conf:
|
||||
DEFAULT:
|
||||
meter_dispatchers: database
|
||||
|
||||
verifier:
|
||||
name: inspec
|
||||
|
||||
platforms:
|
||||
- name: ubuntu-16.04
|
||||
- name: centos-7.5
|
||||
|
||||
suites:
|
||||
- name: compute1
|
||||
customize:
|
||||
cpus: 2
|
||||
memory: 2048
|
||||
driver:
|
||||
network:
|
||||
- ["private_network", {ip: "192.168.100.61"}]
|
||||
- ["private_network", {ip: "192.168.101.61"}]
|
||||
run_list:
|
||||
- recipe[openstack-common]
|
||||
- recipe[openstack-common::logging]
|
||||
- recipe[openstack-common::sysctl]
|
||||
- recipe[openstack-common::python]
|
||||
- recipe[openstack-compute::compute]
|
||||
- name: compute2
|
||||
customize:
|
||||
cpus: 2
|
||||
memory: 2048
|
||||
driver:
|
||||
network:
|
||||
- ["private_network", {ip: "192.168.100.62"}]
|
||||
- ["private_network", {ip: "192.168.101.62"}]
|
||||
run_list:
|
||||
- recipe[openstack-common]
|
||||
- recipe[openstack-common::logging]
|
||||
- recipe[openstack-common::sysctl]
|
||||
- recipe[openstack-common::python]
|
||||
- recipe[openstack-compute::compute]
|
||||
- name: controller
|
||||
customize:
|
||||
cpus: 4
|
||||
memory: 8192
|
||||
driver:
|
||||
network:
|
||||
- ["private_network", {ip: "192.168.100.60"}]
|
||||
- ["private_network", {ip: "192.168.101.60"}]
|
||||
run_list:
|
||||
# run_list taken from roles/multinode-controller.json
|
||||
- recipe[openstack-common]
|
||||
- recipe[openstack-common::logging]
|
||||
- recipe[openstack-common::sysctl]
|
||||
- recipe[openstack-common::python]
|
||||
- recipe[openstack-common::client]
|
||||
- recipe[openstack-common::etcd]
|
||||
- recipe[openstack-ops-database::server]
|
||||
- recipe[openstack-ops-database::openstack-db]
|
||||
- recipe[openstack-ops-messaging::rabbitmq-server]
|
||||
- recipe[openstack-identity::server-apache]
|
||||
- recipe[openstack-identity::registration]
|
||||
- recipe[openstack-identity::openrc]
|
||||
- recipe[openstack-image::api]
|
||||
- recipe[openstack-image::registry]
|
||||
- recipe[openstack-image::identity_registration]
|
||||
- recipe[openstack-network::plugin_config]
|
||||
- recipe[openstack-network::ml2_openvswitch]
|
||||
- recipe[openstack-network]
|
||||
- recipe[openstack-network::openvswitch]
|
||||
- recipe[openstack-network::_bridge_config_example]
|
||||
- recipe[openstack-network::l3_agent]
|
||||
- recipe[openstack-network::dhcp_agent]
|
||||
- recipe[openstack-network::metadata_agent]
|
||||
- recipe[openstack-network::openvswitch_agent]
|
||||
- recipe[openstack-compute::nova-setup]
|
||||
- recipe[openstack-compute::identity_registration]
|
||||
- recipe[openstack-compute::conductor]
|
||||
- recipe[openstack-compute::api-os-compute]
|
||||
- recipe[openstack-compute::api-metadata]
|
||||
- recipe[openstack-compute::placement_api]
|
||||
- recipe[openstack-compute::scheduler]
|
||||
- recipe[openstack-compute::vncproxy]
|
||||
- recipe[openstack-compute::identity_registration]
|
||||
# NOTE: block-storage, orchestration, dashboard, etc. will be installed
|
||||
# but are not tested by tempest
|
||||
- recipe[openstack-block-storage::api]
|
||||
- recipe[openstack-block-storage::scheduler]
|
||||
- recipe[openstack-block-storage::volume_driver_lvm]
|
||||
- recipe[openstack-block-storage::volume]
|
||||
- recipe[openstack-block-storage::backup]
|
||||
- recipe[openstack-block-storage::identity_registration]
|
||||
- recipe[openstack-orchestration::engine]
|
||||
- recipe[openstack-orchestration::api]
|
||||
- recipe[openstack-orchestration::api-cfn]
|
||||
- recipe[openstack-orchestration::identity_registration]
|
||||
- recipe[openstack-image::image_upload]
|
||||
- recipe[openstack-dashboard::horizon]
|
||||
- recipe[openstack-dashboard::neutron-lbaas-dashboard]
|
||||
- recipe[openstack-integration-test::create_network]
|
||||
- recipe[openstack-integration-test::setup]
|
||||
- recipe[openstack-integration-test::run_tempest]
|
||||
verifier:
|
||||
inspec_tests:
|
||||
- test/tempest/default
|
||||
|
132
.kitchen.yml
132
.kitchen.yml
@ -1,132 +0,0 @@
|
||||
<%
|
||||
public_ip = "10.0.0.81"
|
||||
%>
|
||||
---
|
||||
driver:
|
||||
name: vagrant
|
||||
customize:
|
||||
cpus: 4
|
||||
memory: 8192
|
||||
|
||||
client_rb:
|
||||
treat_deprecation_warnings_as_errors: true
|
||||
resource_cloning: false
|
||||
|
||||
provisioner:
|
||||
name: chef_zero
|
||||
# You may wish to disable always updating cookbooks in CI or other testing
|
||||
# environments.
|
||||
# For example:
|
||||
# always_update_cookbooks: <%= !ENV['CI'] %>
|
||||
always_update_cookbooks: true
|
||||
product_name: chef
|
||||
product_version: 14
|
||||
# Copy secret to /tmp/kitchen on test VM. Kitchen tries to gather secrets
|
||||
# before any recipes had a chance to run -> we cannot use a recipe to put the
|
||||
# secrets file in place.
|
||||
encrypted_data_bag_secret_key_path: .chef/encrypted_data_bag_secret
|
||||
|
||||
verifier:
|
||||
name: inspec
|
||||
|
||||
platforms:
|
||||
- name: ubuntu-16.04
|
||||
- name: centos-7.5
|
||||
|
||||
suites:
|
||||
- name: default
|
||||
run_list:
|
||||
# run_list taken from roles/allinone.json
|
||||
- recipe[openstack-common]
|
||||
- recipe[openstack-common::logging]
|
||||
- recipe[openstack-common::sysctl]
|
||||
- recipe[openstack-common::client]
|
||||
- recipe[openstack-ops-database::server]
|
||||
- recipe[openstack-ops-database::openstack-db]
|
||||
- recipe[openstack-ops-messaging::rabbitmq-server]
|
||||
- recipe[openstack-identity::server-apache]
|
||||
- recipe[openstack-identity::registration]
|
||||
- recipe[openstack-identity::openrc]
|
||||
- recipe[openstack-image::api]
|
||||
- recipe[openstack-image::registry]
|
||||
- recipe[openstack-image::identity_registration]
|
||||
- recipe[openstack-network::identity_registration]
|
||||
- recipe[openstack-network::ml2_core_plugin]
|
||||
- recipe[openstack-network::ml2_openvswitch]
|
||||
- recipe[openstack-network]
|
||||
- recipe[openstack-network::openvswitch]
|
||||
- recipe[openstack-network::_bridge_config_example]
|
||||
- recipe[openstack-network::plugin_config]
|
||||
- recipe[openstack-network::server]
|
||||
- recipe[openstack-network::l3_agent]
|
||||
- recipe[openstack-network::dhcp_agent]
|
||||
- recipe[openstack-network::metadata_agent]
|
||||
- recipe[openstack-network::openvswitch_agent]
|
||||
- recipe[openstack-compute::nova-setup]
|
||||
- recipe[openstack-compute::identity_registration]
|
||||
- recipe[openstack-compute::conductor]
|
||||
- recipe[openstack-compute::api-os-compute]
|
||||
- recipe[openstack-compute::api-metadata]
|
||||
- recipe[openstack-compute::placement_api]
|
||||
- recipe[openstack-compute::scheduler]
|
||||
- recipe[openstack-compute::vncproxy]
|
||||
- recipe[openstack-compute::compute]
|
||||
- recipe[openstack-compute::identity_registration]
|
||||
# NOTE: block-storage, orchestration, dashboard, etc. can be installed
|
||||
# but are not tested by tempest
|
||||
- recipe[openstack-block-storage::api]
|
||||
- recipe[openstack-block-storage::scheduler]
|
||||
- recipe[openstack-block-storage::volume_driver_lvm]
|
||||
- recipe[openstack-block-storage::volume]
|
||||
- recipe[openstack-block-storage::backup]
|
||||
- recipe[openstack-block-storage::identity_registration]
|
||||
- recipe[openstack-orchestration::engine]
|
||||
- recipe[openstack-orchestration::api]
|
||||
- recipe[openstack-orchestration::api-cfn]
|
||||
- recipe[openstack-orchestration::identity_registration]
|
||||
- recipe[openstack-image::image_upload]
|
||||
- recipe[openstack-dashboard::horizon]
|
||||
- recipe[openstack-dashboard::neutron-lbaas-dashboard]
|
||||
- recipe[openstack-integration-test::create_network]
|
||||
- recipe[openstack-integration-test::setup]
|
||||
- recipe[openstack-integration-test::run_tempest]
|
||||
driver_config:
|
||||
network:
|
||||
- ["private_network", {ip: <%= public_ip %>}]
|
||||
verifier:
|
||||
inspec_tests:
|
||||
- test/tempest/default
|
||||
# from environments/allinone-ubuntu16.json, environments/allinone-centos7.json
|
||||
attributes:
|
||||
# Attributes copied from environments/integration-ubuntu16.json
|
||||
apache:
|
||||
listen: []
|
||||
yum:
|
||||
epel:
|
||||
enabled: false
|
||||
openstack:
|
||||
is_release: true
|
||||
apt:
|
||||
update_apt_cache: true
|
||||
dashboard:
|
||||
server_hostname: localhost
|
||||
memcached_servers: ['127.0.0.1:11211']
|
||||
telemetry:
|
||||
conf:
|
||||
DEFAULT:
|
||||
meter_dispatchers: database
|
||||
mq:
|
||||
user: admin
|
||||
network:
|
||||
conf:
|
||||
DEFAULT:
|
||||
service_plugins: router
|
||||
image:
|
||||
image_upload: true
|
||||
compute:
|
||||
conf:
|
||||
libvirt:
|
||||
cpu_type: none
|
||||
virt_type: qemu
|
||||
secret:
|
||||
key_path: /tmp/kitchen/encrypted_data_bag_secret
|
13
.rubocop.yml
13
.rubocop.yml
@ -1,13 +0,0 @@
|
||||
inherit_from: .rubocop_todo.yml
|
||||
|
||||
AllCops:
|
||||
Include:
|
||||
- '**/*.rb'
|
||||
- '**/Gemfile'
|
||||
- environments/**/*.rb
|
||||
- roles/**/*.rb
|
||||
- .chef/**/*.rb
|
||||
Exclude:
|
||||
- cookbooks/**/*
|
||||
- vms/**/*
|
||||
- nodes/**/*
|
@ -1,14 +0,0 @@
|
||||
# This configuration was generated by
|
||||
# `rubocop --auto-gen-config`
|
||||
# on 2017-12-22 17:48:38 -0800 using RuboCop version 0.49.1.
|
||||
# The point is for the user to remove these configuration records
|
||||
# one by one as the offenses are removed from the code base.
|
||||
# Note that changes in the inspected code, or installation of new
|
||||
# versions of RuboCop, may require this file to be generated again.
|
||||
|
||||
# Offense count: 1
|
||||
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
||||
# SupportedStyles: for, each
|
||||
Style/For:
|
||||
Exclude:
|
||||
- 'Rakefile'
|
@ -1,3 +0,0 @@
|
||||
- project:
|
||||
templates:
|
||||
- noop-jobs
|
26
Berksfile
26
Berksfile
@ -1,26 +0,0 @@
|
||||
source 'https://supermarket.chef.io'
|
||||
|
||||
%w(
|
||||
integration-test
|
||||
orchestration
|
||||
telemetry
|
||||
block-storage
|
||||
common
|
||||
compute
|
||||
dashboard
|
||||
dns
|
||||
identity
|
||||
image
|
||||
network
|
||||
ops-database
|
||||
ops-messaging
|
||||
).each do |cookbook|
|
||||
if Dir.exist?("../cookbook-openstack-#{cookbook}")
|
||||
cookbook "openstack-#{cookbook}", path: "../cookbook-openstack-#{cookbook}"
|
||||
else
|
||||
cookbook "openstack-#{cookbook}", git: "https://git.openstack.org/openstack/cookbook-openstack-#{cookbook}"
|
||||
end
|
||||
end
|
||||
|
||||
cookbook 'openstackclient', git: 'https://git.openstack.org/openstack/cookbook-openstackclient'
|
||||
cookbook 'statsd', github: 'librato/statsd-cookbook'
|
@ -1,35 +0,0 @@
|
||||
Contributing
|
||||
============
|
||||
|
||||
How To Get Started
|
||||
------------------
|
||||
|
||||
If you would like to contribute to the development of OpenStack Chef Cookbooks,
|
||||
you must follow the steps in this page:
|
||||
|
||||
http://docs.openstack.org/infra/manual/developers.html
|
||||
|
||||
Gerrit Workflow
|
||||
---------------
|
||||
|
||||
Once those steps have been completed, changes to OpenStack
|
||||
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.
|
||||
|
||||
Bugs
|
||||
----
|
||||
|
||||
Bugs should be filed on Launchpad, not GitHub:
|
||||
|
||||
https://bugs.launchpad.net/openstack-chef
|
||||
|
||||
Contacts
|
||||
--------
|
||||
|
||||
Mailing list: [chef] on the OpenStack-Dev mailing list
|
||||
IRC: #openstack-chef is our channel on irc.freenode.net
|
||||
Wiki: https://wiki.openstack.org/wiki/Chef/GettingStarted
|
201
LICENSE
201
LICENSE
@ -1,201 +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.
|
286
README.md
286
README.md
@ -1,286 +1,8 @@
|
||||
Team and repository tags
|
||||
========================
|
||||
This project is no longer maintained.
|
||||
|
||||
[![Team and repository tags](http://governance.openstack.org/badges/openstack-chef-repo.svg)](http://governance.openstack.org/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 -->
|
||||
For the replacement to this repository, see https://git.openstack.org/cgit/openstack/openstack-chef
|
||||
|
||||
![Chef OpenStack Logo](https://www.openstack.org/themes/openstack/images/project-mascots/Chef%20OpenStack/OpenStack_Project_Chef_horizontal.png)
|
||||
For any further questions, please email openstack-dev@lists.openstack.org or join #openstack-chef on Freenode.
|
||||
|
||||
# Testing framework for deploying OpenStack using Chef
|
||||
|
||||
This is the testing framework for OpenStack deployed using
|
||||
[Chef](https://www.chef.io). We leverage this to test against our changes to our
|
||||
[cookbooks](https://wiki.openstack.org/wiki/Chef/GettingStarted) to make sure
|
||||
that you can still build a cluster from the ground up with any changes we
|
||||
introduce.
|
||||
|
||||
This framework also gives us an opportunity to show different Reference
|
||||
Architectures and a sane example on how to start with OpenStack using Chef.
|
||||
|
||||
With the `master` branch of the cookbooks, which is currently tied to the base
|
||||
OpenStack Ocata release, this supports deploying to Ubuntu 16.04 and CentOS 7
|
||||
in monolithic, or allinone, and non-HA multinode configurations with Neutron.
|
||||
The cookbooks support a fully HA configuration, but we do not test for that as
|
||||
there are far numerous paths to
|
||||
HA.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [ChefDK](https://downloads.chef.io/chef-dk/) 2.0 or later
|
||||
- [Vagrant](https://www.vagrantup.com/downloads.html) 2.0 or later with
|
||||
[VirtualBox](https://www.virtualbox.org/wiki/Downloads) or some other provider
|
||||
|
||||
### Getting the Code (this repo)
|
||||
|
||||
```shell
|
||||
$ git clone https://github.com/openstack/openstack-chef-repo.git
|
||||
$ cd openstack-chef-repo
|
||||
```
|
||||
|
||||
The OpenStack cookbooks by default use encrypted data bags for configuring
|
||||
passwords. There are four data bags : *user_passwords*, *db_passwords*,
|
||||
*service_passwords*, *secrets*. There already exists a `data_bags/` directory,
|
||||
so you shouldn't need to create any for a proof of concept. If you do, something is wrong.
|
||||
See the [Data Bags](doc/data_bags.md) doc for the gory details.
|
||||
|
||||
## Supported Deployments
|
||||
|
||||
For each deployment model, there is a corresponding file in the doc/ directory.
|
||||
Please review that for specific details and additional setup that might be
|
||||
required before deploying the cloud.
|
||||
|
||||
## Kitchen Deploy Commands
|
||||
|
||||
These commands will produce various OpenStack cluster configurations, the
|
||||
simplest being a monolithic Compute Controller with Neutron (allinone). These
|
||||
deployments are not intended to be production-ready, and will need adaptation
|
||||
to your environment. This is intended for development and proof of concept
|
||||
deployments.
|
||||
|
||||
## Kitchen Test Scenarios
|
||||
|
||||
### Initialize the ChefDK
|
||||
```bash
|
||||
$ eval "$(chef shell-init bash)"
|
||||
```
|
||||
|
||||
### Everything self-contained (allinone)
|
||||
```bash
|
||||
# allinone with Neutron
|
||||
$ kitchen test [centos|ubuntu]
|
||||
```
|
||||
|
||||
### Access the machine
|
||||
|
||||
```bash
|
||||
$ kitchen login [centos|ubuntu]
|
||||
$ sudo su -
|
||||
```
|
||||
|
||||
### Multiple nodes (non-HA)
|
||||
```bash
|
||||
# Multinode with Neutron (1 controller + 2 compute nodes)
|
||||
$ export KITCHEN_YAML=.kitchen.multi.yaml
|
||||
$ kitchen converge [centos|ubuntu|all]
|
||||
$ kitchen verify [centos|ubuntu|all]
|
||||
$ kitchen destroy [centos|ubuntu|all]
|
||||
```
|
||||
|
||||
### Access the Controller
|
||||
|
||||
```bash
|
||||
$ kitchen login controller-[centos|ubuntu]
|
||||
$ sudo su -
|
||||
```
|
||||
|
||||
### Access the Compute nodes
|
||||
|
||||
```bash
|
||||
$ cd vms
|
||||
$ kitchen login compute1
|
||||
# OR
|
||||
$ kitchen login compute2
|
||||
$ sudo su -
|
||||
```
|
||||
|
||||
### Testing The Controller
|
||||
|
||||
```bash
|
||||
# Access the controller as noted above
|
||||
$ source /root/openrc
|
||||
$ nova --version
|
||||
$ openstack service list && openstack hypervisor list
|
||||
$ openstack image list
|
||||
$ openstack user list
|
||||
$ openstack server list
|
||||
```
|
||||
|
||||
### Working With Security Groups ###
|
||||
|
||||
To allow SSH access to instances, a security group is defined as follows:
|
||||
|
||||
```bash
|
||||
$ openstack security group list
|
||||
$ openstack security group list default
|
||||
$ openstack security group create allow_ssh --description "allow ssh to instances"
|
||||
$ openstack security group rule create allow_ssh --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
|
||||
$ openstack security group list allow_ssh
|
||||
```
|
||||
|
||||
### Working With Keys ###
|
||||
|
||||
To allow SSH keys to be injected into instance, a key pair is defined as follows:
|
||||
|
||||
```bash
|
||||
# generate a new key pair
|
||||
$ openstack keypair create mykey > mykey.pem
|
||||
$ chmod 600 mykey.pem
|
||||
$ openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
|
||||
# verify the key pair has been imported
|
||||
$ openstack keypair list
|
||||
```
|
||||
|
||||
#### Booting up a cirros image on the Controller
|
||||
|
||||
```bash
|
||||
$ openstack server create --flavor 1 --image cirros --security-group allow_ssh --key-name mykey test
|
||||
```
|
||||
|
||||
Wait a few seconds and the run `openstack server list` if Status is not Active, wait a few seconds and repeat.
|
||||
|
||||
Once status is active you should be able to log in using SSH, or `vagrant ssh <vm_name>`
|
||||
|
||||
```bash
|
||||
$ ssh cirros@<ip address from openstack server list output>
|
||||
```
|
||||
|
||||
#### Accessing The OpenStack Dashboard
|
||||
|
||||
If you would like to use the OpenStack dashboard you should go to https://localhost:9443 and the username and password is `admin/mypass`.
|
||||
|
||||
#### Verifying OpenStack With Tempest
|
||||
|
||||
If you log in to the `controller` machine you can test via the most recent [Tempest](https://github.com/openstack/tempest) release.
|
||||
|
||||
```bash
|
||||
$ cd vms
|
||||
$ vagrant ssh <controller>
|
||||
$ sudo su -
|
||||
root@controller:~ cd /opt/tempest
|
||||
root@controller:/opt/tempest$ ./run_tempest.sh -V --smoke --serial
|
||||
|
||||
[-- snip --]
|
||||
|
||||
tempest.tests.test_wrappers.TestWrappers
|
||||
test_pretty_tox 1.68
|
||||
test_pretty_tox_fails 1.03
|
||||
test_pretty_tox_serial 0.61
|
||||
test_pretty_tox_serial_fails 0.55
|
||||
|
||||
Ran 233 tests in 13.869s
|
||||
|
||||
OK
|
||||
Running flake8 ...
|
||||
root@controller:/opt/tempest#
|
||||
```
|
||||
|
||||
|
||||
## Cleanup
|
||||
|
||||
To remove all the nodes and start over again with a different environment or different environment attribute overrides, using the following rake command.
|
||||
|
||||
```bash
|
||||
$ chef exec rake destroy_machines
|
||||
```
|
||||
|
||||
To refresh all cookbooks, use the following commands.
|
||||
|
||||
```bash
|
||||
$ rm -rf cookbooks
|
||||
$ chef exec rake berks_vendor
|
||||
```
|
||||
|
||||
To clean up everything, use the following rake command.
|
||||
|
||||
```bash
|
||||
$ chef exec rake clean
|
||||
```
|
||||
|
||||
## Tools
|
||||
|
||||
See the doc/tools.md for more information.
|
||||
|
||||
## Data Bags
|
||||
|
||||
Some basic information about the use of data bags within this repo.
|
||||
|
||||
```
|
||||
# Show the list of data bags
|
||||
$ chef exec knife data bag list -z
|
||||
db_passwords
|
||||
secrets
|
||||
service_passwords
|
||||
user_passwords
|
||||
|
||||
# Show the list of data bag items
|
||||
$ chef exec knife data bag show db_passwords -z
|
||||
cinder
|
||||
dash
|
||||
glance
|
||||
horizon
|
||||
keystone
|
||||
neutron
|
||||
nova
|
||||
|
||||
# Show contents of data bag item
|
||||
$ chef exec knife data bag show db_passwords nova -z
|
||||
Encrypted data bag detected, decrypting with provided secret.
|
||||
nova: mypass
|
||||
id: nova
|
||||
|
||||
# Update contents of data bag item
|
||||
# set EDITOR env var to your editor. eg. EDITOR=vi
|
||||
$ chef exec knife data bag edit secrets dispersion_auth_user -z
|
||||
```
|
||||
|
||||
### Data Bag Default Values
|
||||
db_passwords are set to "mypass"
|
||||
secrets are set to "<key>_token"
|
||||
service_passwords are set to "mypass"
|
||||
user_passwords are set to "mypass"
|
||||
|
||||
### Default Encrypted Data Bag Secret
|
||||
The default secret is stored here .chef/encrypted_data_bag_secret
|
||||
and referenced by .chef/knife.rb.
|
||||
|
||||
When we say defaults, we mean that they are known by everyone with access to
|
||||
this repository. Change these to something else before deploying for real.
|
||||
|
||||
## Known Issues and Workarounds
|
||||
|
||||
### Windows Platform
|
||||
|
||||
When using this on a Windows platform, here are some tweaks to make this work:
|
||||
|
||||
- In order to get SSH to work, you will need an SSL client installed. You can use the one that comes with [Git for Windows](http://git-scm.com/download). You will need to append `C:\Program Files (x86)\Git\bin;` to the system PATH.
|
||||
|
||||
## TODOs
|
||||
|
||||
- Support for floating IPs
|
||||
- Better instructions for multi-node network setup
|
||||
- Easier debugging. Maybe a script to pull the logs from the controller.
|
||||
|
||||
# License #
|
||||
|
||||
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.
|
||||
|
162
Rakefile
162
Rakefile
@ -1,162 +0,0 @@
|
||||
current_dir = File.dirname(__FILE__)
|
||||
client_opts = "--force-formatter --no-color -z --config #{current_dir}/.chef/knife.rb"
|
||||
|
||||
task default: ['test']
|
||||
|
||||
desc 'Default gate tests to run'
|
||||
task test: %i(rubocop berks_vendor json_check)
|
||||
|
||||
def run_command(command)
|
||||
if File.exist?('Gemfile.lock')
|
||||
sh %(bundle exec #{command})
|
||||
else
|
||||
sh %(chef exec #{command})
|
||||
end
|
||||
end
|
||||
|
||||
task :destroy_all do
|
||||
run_command('rm -rf Gemfile.lock && rm -rf Berksfile.lock && rm -rf cookbooks/')
|
||||
end
|
||||
|
||||
desc 'Vendor your cookbooks/'
|
||||
task :berks_vendor do
|
||||
run_command('berks vendor cookbooks')
|
||||
end
|
||||
|
||||
desc 'Create Chef Key'
|
||||
task :create_key do
|
||||
unless File.exist?('.chef/validator.pem')
|
||||
require 'openssl'
|
||||
File.binwrite('.chef/validator.pem', OpenSSL::PKey::RSA.new(2048).to_pem)
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Blow everything away'
|
||||
task clean: [:destroy_all]
|
||||
|
||||
# CI tasks
|
||||
require 'cookstyle'
|
||||
require 'rubocop/rake_task'
|
||||
desc 'Run RuboCop'
|
||||
RuboCop::RakeTask.new do |task|
|
||||
task.options << '--display-cop-names'
|
||||
end
|
||||
|
||||
desc 'Validate data bags, environments and roles'
|
||||
task :json_check do
|
||||
require 'json'
|
||||
['data_bags/*', 'environments', 'roles'].each do |sub_dir|
|
||||
Dir.glob(sub_dir + '/*.json') do |env_file|
|
||||
puts "Checking #{env_file}"
|
||||
JSON.parse(File.read(env_file))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Helper for running various testing commands
|
||||
def _run_commands(desc, commands, openstack = true)
|
||||
puts "## Running #{desc}"
|
||||
commands.each do |command, options|
|
||||
options.each do |option|
|
||||
if openstack
|
||||
sh %(sudo bash -c '. /root/openrc && #{command} #{option}')
|
||||
else
|
||||
sh %(#{command} #{option})
|
||||
end
|
||||
end
|
||||
end
|
||||
puts "## Finished #{desc}"
|
||||
end
|
||||
|
||||
# use the correct environment depending on platform
|
||||
if File.exist?('/usr/bin/apt-get')
|
||||
@platform = 'ubuntu16'
|
||||
elsif File.exist?('/usr/bin/yum')
|
||||
@platform = 'centos7'
|
||||
end
|
||||
|
||||
# Helper for looking at the starting environment
|
||||
def _run_env_queries
|
||||
_run_commands('basic common env queries', {
|
||||
'uname' => ['-a'],
|
||||
'pwd' => [''],
|
||||
'env' => [''],
|
||||
},
|
||||
false)
|
||||
case @platform
|
||||
when 'ubuntu16'
|
||||
_run_commands('basic debian env queries', {
|
||||
'ifconfig' => [''],
|
||||
'cat' => ['/etc/apt/sources.list'],
|
||||
},
|
||||
false)
|
||||
when 'centos7'
|
||||
_run_commands('basic rhel env queries', {
|
||||
'/usr/sbin/ip' => ['addr'],
|
||||
'cat' => ['/etc/yum.repos.d/*'],
|
||||
},
|
||||
false)
|
||||
end
|
||||
end
|
||||
|
||||
# Helper for setting up basic query tests
|
||||
def _run_basic_queries
|
||||
_run_commands('basic common test queries',
|
||||
'sudo netstat' => ['-nlp'],
|
||||
'nova-manage' => ['version', 'db version'],
|
||||
'nova' => %w(--version service-list hypervisor-list flavor-list),
|
||||
'glance-manage' => %w(db_version),
|
||||
'glance' => %w(--version image-list),
|
||||
'keystone-manage' => %w(db_version),
|
||||
'openstack' => ['--version', 'user list', 'endpoint list', 'role list',
|
||||
'service list', 'project list',
|
||||
'network agent list', 'extension list --network ',
|
||||
'network list', 'subnet list'],
|
||||
'ovs-vsctl' => %w(show))
|
||||
case @platform
|
||||
when 'ubuntu16'
|
||||
_run_commands('basic debian test queries',
|
||||
'rabbitmqctl' => %w(cluster_status),
|
||||
'ip' => ['addr', 'route', '-6 route'])
|
||||
when 'centos7'
|
||||
_run_commands('basic rhel test queries',
|
||||
'/usr/sbin/rabbitmqctl' => %w(cluster_status),
|
||||
'/usr/sbin/ip' => ['addr', 'route', '-6 route'])
|
||||
end
|
||||
end
|
||||
|
||||
def _save_logs(prefix, log_dir)
|
||||
sh %(sleep 25)
|
||||
%w(nova neutron keystone glance apache2 rabbitmq mysql mysql-default openvswitch mariadb).each do |project|
|
||||
sh %(mkdir -p #{log_dir}/#{prefix}/#{project})
|
||||
sh %(sudo cp -rL /etc/#{project} #{log_dir}/#{prefix}/#{project}/etc || true)
|
||||
sh %(sudo cp -rL /var/log/#{project} #{log_dir}/#{prefix}/#{project}/log || true)
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Integration test on Infra'
|
||||
task integration: %i(create_key berks_vendor) do
|
||||
log_dir = ENV['WORKSPACE'] + '/logs'
|
||||
sh %(mkdir #{log_dir})
|
||||
# This is a workaround for allowing chef-client to run in local mode
|
||||
sh %(sudo mkdir -p /etc/chef && sudo cp .chef/encrypted_data_bag_secret /etc/chef/openstack_data_bag_secret)
|
||||
_run_env_queries
|
||||
|
||||
# Three passes to ensure idempotency. prefer each to times, even if it
|
||||
# reads weird
|
||||
for i in 1..3 do
|
||||
begin
|
||||
puts "####### Pass #{i}"
|
||||
# Kick off chef client in local mode, will converge OpenStack right on the gate job "in place"
|
||||
sh %(sudo chef-client #{client_opts} -E integration -r 'role[minimal]' > #{log_dir}/chef-client-pass#{i}.txt 2>&1 )
|
||||
_run_basic_queries
|
||||
rescue => e
|
||||
raise "####### Pass #{i} failed with #{e.message}"
|
||||
ensure
|
||||
# make sure logs are saved, pass or fail
|
||||
_save_logs("pass#{i}", log_dir)
|
||||
sh %(sudo chown -R $USER #{log_dir}/pass#{i})
|
||||
sh %(sudo chmod -R go+rx #{log_dir}/pass#{i})
|
||||
end
|
||||
end
|
||||
end
|
@ -1,6 +0,0 @@
|
||||
# Testing the Openstack Cookbook Repo
|
||||
Basic tests are rubucop and Berks. To run these test use:
|
||||
|
||||
```bash
|
||||
$ chef exec rake
|
||||
```
|
@ -1,5 +0,0 @@
|
||||
build-essential [platform:dpkg]
|
||||
liblzma-dev [platform:dpkg]
|
||||
xz-devel [platform:rpm]
|
||||
zlib1g-dev [platform:dpkg]
|
||||
zlib-devel [platform:rpm]
|
11
bootstrap.sh
11
bootstrap.sh
@ -1,11 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
## This script is for installing all the needed packages on trusty to run the chef tests with 'chef exec rake'.
|
||||
## It relies on the common bootstrap.sh from openstack/cookbook-openstack-common for installing common dependencies.
|
||||
|
||||
wget -nv -t 3 -O common-bootstrap.sh https://raw.githubusercontent.com/openstack/cookbook-openstack-common/master/bootstrap.sh
|
||||
/bin/bash -x common-bootstrap.sh
|
||||
|
||||
# To enable cookbook Depends-On support, the Common bootstrap above will already
|
||||
# get the cookbook dependencies cloned into ../openstack-cookbook-xxxx. In order to
|
||||
# have the repo tests use these cookbooks patches, the Berksfile uses the ZUUL_CHANGES
|
||||
# variable to trigger using local cookbooks.
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "horizon.key",
|
||||
"horizon.key": {
|
||||
"encrypted_data": "3f0zL64eSf4wlcjb0WqmKpOeP9v232NLo2H9r+kMHWaWTtzU/nd3/O91NTgf\nUL9dx+TrSVniwo32+Q68s9xnes+zNarcdEh7xuzmsKshXl3VfvTRQjsk1Qq5\n18ooFOvRBZzD3sPp+AbYavvzvZfEJY4jYcLIs4lami95KdNdziePm2bD1v5b\n2YcWgfmSuSnNI/LYuxaCx5qQvSCpFbr0YKSCURaGDnB+firpj6gom+pXvVf+\n2ao4gHEjnDtYliwBl7f1jh/LD3a3mmpiNEwEtAR+Jx34EIdo0I0TsIcRvpZ4\nLOHrSO8e0fwgCBg6lQywZg3ZZwT8g75YWyTcaZ3omdPTitUaygyY6HoM3K3R\nwJDD2mslHdH8stEbxNjy0Wz59hTN+rTf+AMr7hadUa5t36dERiQMTb2ua/iY\nNjQGa6Shl0YOp+q+FFEL78pAXcaXCEGhVyVkQ0yVzPeazAQFhHDuz4J8nNco\n9M3ZxoRkUKH2BcNFIlCf1VSPQaPc81Rs3lhy/9kjnKBMyD45iTcSPI2m8zkZ\n4hAv4PFVhkY7QVVsV4iYJadoA1w9MPQndM2Si27ovFYgCmMOvKpeFHvmuPb8\nvw0Oil0lNG9zV5J81sivKXoIFs84W8c3s06roBK8SARatVVGtIj3TNsjJ/IC\n1QsaOuM2vq6aNnANvM2NTwOwicnupE7hGu86ewrtukY1ag7gORRGmfU/A3sN\npSd8RORdMEGQ97ACS98KhAbnQ3nVq+c07JC50txRemzCkqUiVnl6Uqed5q6e\n3Qlfzqud4oWVc91ol/Q90+6ekpdSCONxbXpiglkca1slszaLh8nW2bp0zbYp\nFT61UzGGYDCSrR37dc33cbxieDFHNfpZa/iU1jf97azQokidytjnNEA/DhbB\nAkGCvwoOZRubjR56/sKYgGvz8meyWTY94RnAxEJrzFkrSybUZ8wkIPd9d8B8\nYtiWZNOS/rMM9L1fE9cRDQWrSVHLex4kJDVIG+DBvEMvXve2EaeqfwPymsHi\nRR4o9kSr4i8MxiH5we+Ko33rwQaQEplNAf5qt2st9grbfQYzsf81OBaUtF3L\n3GLACI/3CWUP7bVWfkMH9bo5Tv9KfsKlQgfLZ5Ehp+v57xGYSS/G+V0jZyFi\nwOPH88s6m715zNpH48h0qkgYJjpN/dQrSyAau1OZpY6xfY3NAPVolAOoXAkA\nnTbY6WZULBT5LO0B74XKzvdZtCe8rOqg+iyQIMSEPN3DBb+TJSzfc8m5qQyf\nQ/JUOSbCIpG/uvFFZblkiWeUYt6GDhsALhCbBYdRCv/9ZGmzUkznHBi0ScsD\nvPhkZ5MuTLTfAITP7TFaQDSirMn5Bnag8voddQR5P1ugiK4TCqVD9fuBYEck\nIHRwRPTFNxmvhDmK/5dTGQMCixo+HGdLPrz5w9AcsGQqDyRU1ZyMqL4HfXL7\nOnFrbEa5yPsZWvHETgn02SLrNXCdi3pPrrx5au3yHPp13xz9M8Hvj+a/h876\nU3irt9hxPolArJsmRkNfoUsg2tSxq8CXi/zSXftbTP9pAdgekem1aDxGdOrQ\ntiAUc8wM9Dfr0WvTlVXZZMxSPHjgT/QUL/f4XM3MP3AhgTCcTiVawiJntkQq\nYkq3AM3ZR1tIm6u+AyYy5f6F3qofozO07+6E+k7OyOO/0kpr/g7g5HxzBR2v\n4bcFYeN6mryj6hmC202zNe4wNsRJh/rs25s0/AaBbEX3BDtsES7EIIjMtmSp\nEAwfPjKFAISrv/WbCBsg+NgJAB4VSmD3AK0OZ2bEvn8QO0Y0PwPmc6nXmDut\nWoBcE84bmVM5CmtaZt8uIcHdCrDp4T/UMmvMae3QHTrOPX45OLQGvD1n0qDL\nRteC4cIhD0qYOPZszg7y1rKbjFMnc0RCbrPGBB6CrR4aWtjuf2anlqq4aPO9\nNLxL6NMIJJjLoY9DOxUYGY7diPKp/lutb8zx6ZiEJkdPvTBz08PVAPfMPfay\ndURo0Bu9vvfd4lZw2qcgIpAR2S6wY/xuf2BTI4mySeJ8DiVZmuGt8tYgl9Ub\nRVjVXkGV4Sicz32oPW4MyYmG+/oV12xHLXTkWiWp7dZ2E9VF9zGzD9MuRSBr\n9HyJQZmuikRzLW97clFjEXYXYTBn7CrXkA8oH5dhJhWMYX0sd8OTY4KtTQvH\nd0TlzOF0FGChFe3YWfJUPWZFwN1oKR5rhDHMjXq2V6MnzGDTB2q6ad+UpAj3\nBULnrLfz/iLy78m1N5i8LwT1kE5gKZgC6D4yCm/NYFA3KG1WNBYaDarUS2Zs\nhNYY3CK5znhT\n",
|
||||
"iv": "AV+8lbESrFCjMXig\n",
|
||||
"auth_tag": "c6EySjqyezhwtoTOAmNFKg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "horizon.pem",
|
||||
"horizon.pem": {
|
||||
"encrypted_data": "nlKZmdaoD3UcAeN9MRWG5JAP/9TihwjCWtznvohy8FrEMf5VaJjNW5z4kswa\n4y//i+6c4GgRtoGfJ9+aPvwyU+vk78qwetscMmY5EoZ+SlsSkRvWXSuLV0a6\n34hG3GPnaKgvq9+dzmv88kEyK6x95wGCdHJN3eGShjTvoLICc2n6Kwiof3FT\n+qql7UDCehTK3h/5RCai2h51eL20nC0H0+Af8saCRjMYs5U9wl2AFwqBaBaO\nQS7iCag0xWu6IGwAir6jlMDhkhUhpeo3cNu0tbYeQYrC9hSde7fk8ejhsGxi\nQzmdlSaVoEzYXJbRNbhRTLbB7odc4tZmZt1yX8v4xu/N62c33+eoqlvxyx3P\nwXrJNoO7JLo0hiO3t/pmvb2l9cnBupQReABML4fkXBP61IWSx97G0nGCTY8K\njnRaQdSwTFhysYgUyq/DiRkZq/jVf1pFcN+Gn6mKsicYOw8b117UuPyQ+3yS\nV3xC//ugh3C6VNEmpIA/768GUUzX/9VRR4unbTChSVI2TFzmyfmcKqKlY9ZK\nzvV4giGvyC8Sut2cvYV1pvQYHzKzXco97GyM34R3Nko8V7XoINx468IWA3e0\nzP3nCVJnZcRe6lhxL+im9MUueabHp6pJeN6mij2cUjUQjD6UZr1xC7EzfTeR\nVwxuDgU/SzI3HgDiBVNdeFQe/WJZS/9NuWlPZADeKqK+8iLRc7novhfCibyi\n07Ml7vkuMUqj5011+m7+RZVA+0RBJoVCIHimP33GekCkdock3MUJeaLAE0KR\nzJNYZ3jWy9FNGKjvYETt3kizHjaed4NoJm5lc3WIqvETc6l9d0GR0ch5LEry\n5l9kIQk8VEx/18xUIitgsjObLm/btIAYHPv5xFxy8WSSL85pwFcQGzso1y6D\nSZVTifmYKHjo6upmtGfAiBnU9rOF7tw2kzPqkdhYbQA0qL1jvu5oBnz7CfVN\ne46psv2c+HcLvNW7YOpSGEkGIYxDBU2ZqTol/Xgx+MlsHsP7+4lnpXEi6ITa\nImjYv0IEob+Uo1pEAZAEAB5ZFFtCAcakkG2kmF01HMKXb0GJfQijrHxGbcjB\naSfuL7vuYiw6Mn2tJJopBGHjWUt+uvNvYPNgrg7PzbtIo6Gw1AejjZTMb4Qe\nhz2OeFTqbGF6N0LR7Ci0bIBww+mZA7+nX2VFjNmCV1akAvEmyNfEVR6oemMU\naqS0vmSMzvz+d7lodECDii3fgIn1IbGLuzhZLNDlFKrvOihRVUsN+DQow6yb\niPkDvYj+UQbu56dimXaCJheNwp/d7ta+LD/s1DEelvYKMYVgM1djNYOHgPyL\nriUN581WaoprEX7CavK8UVpRe4NjhVaCuIUwYbpisI6HkinlIZx33Z5ObSR1\nKCiyim/BviADlfk0\n",
|
||||
"iv": "zSD5P5yNXBwg1XMh\n",
|
||||
"auth_tag": "+PTbpzCL8Z9CCdQlCBlpZg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "ceilometer",
|
||||
"ceilometer": {
|
||||
"encrypted_data": "4FgQ2zK7Pkev7JzeyRqihxQngH+tqh35jg==\n",
|
||||
"iv": "k+T3QVpvWlWQ30Ut\n",
|
||||
"auth_tag": "/NA2evvK7si0yxwmnRJ3og==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "cinder",
|
||||
"cinder": {
|
||||
"encrypted_data": "1by8qBeRo74m5W3MoqRDpeevrXcRj/vEUg==\n",
|
||||
"iv": "/s2YnhagoS4L7mHK\n",
|
||||
"auth_tag": "6Z3rDRZhJN/p1pP15lRvJA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "dash",
|
||||
"dash": {
|
||||
"encrypted_data": "FMorEJGnOtIrwq3ZIv/VWrCtcwk3TYvdWQ==\n",
|
||||
"iv": "nKg1lu9brBNkKrmP\n",
|
||||
"auth_tag": "5gYG8p5FkbIumuHcsTU6MQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "designate",
|
||||
"designate": {
|
||||
"encrypted_data": "rq7N+DifbtXHQiC8s0x8Z0jm5JodjtBJzg==\n",
|
||||
"iv": "E5z9mnkCS0WG9f6W\n",
|
||||
"auth_tag": "Q7nnYiGaRRfGEgHTznN10A==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "glance",
|
||||
"glance": {
|
||||
"encrypted_data": "lYZcqw2GLqLDglm9ONo0xk+CYhDocWLXAw==\n",
|
||||
"iv": "uZLZMCwhJrc6R+6l\n",
|
||||
"auth_tag": "JrQJQWBQDOa32p3bmAHK7Q==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "gnocchi",
|
||||
"gnocchi": {
|
||||
"encrypted_data": "0ANqZgd9RLtXx4cGhrgt6aYlXuq2b7d8cQ==\n",
|
||||
"iv": "8VdizNsosQfKI4Uq\n",
|
||||
"auth_tag": "G9E/N4P0kTkZbkJ7Yidneg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "heat",
|
||||
"heat": {
|
||||
"encrypted_data": "KhZYFaqHl1+2BGPghfN8St1MvYJ9TR5zhg==\n",
|
||||
"iv": "BtutaTvxERLrI5EH\n",
|
||||
"auth_tag": "Y+hr4cMfo8huhbZrtEem5w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "horizon",
|
||||
"horizon": {
|
||||
"encrypted_data": "JJ7qeWAKWjFlpkBJvdbCNLRISgCieLUR/A==\n",
|
||||
"iv": "qTo/3JGrAhW5MnrP\n",
|
||||
"auth_tag": "MrsnHjmayCq4GXsG0uXLSw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "keystone",
|
||||
"keystone": {
|
||||
"encrypted_data": "QWQZ5jZzkxsysPC3B/6QPvYc5tza3rZOoA==\n",
|
||||
"iv": "JQydX+XgeIoCaNHt\n",
|
||||
"auth_tag": "exz+tonoekz8puDjdFd3QA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "mysqlroot",
|
||||
"mysqlroot": {
|
||||
"encrypted_data": "pY87wT67k8N3bwTC9rerphVa6yPv/eNnQQ==\n",
|
||||
"iv": "QFUJNOQUAzv37RcS\n",
|
||||
"auth_tag": "v0/GwZ2VQplMr7FPkseQuw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "neutron",
|
||||
"neutron": {
|
||||
"encrypted_data": "EaNzE0hWsOOKRUh1ODZafzJcKlcMiqtmDA==\n",
|
||||
"iv": "mr9ad3WFuUjbtYeu\n",
|
||||
"auth_tag": "rakN7H8CqWc6lyz7L98idA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "nova",
|
||||
"nova": {
|
||||
"encrypted_data": "MIFXMvRR5B2c7eVZEB5NgSTij0cnCQiI3w==\n",
|
||||
"iv": "AlH0YzOhOQTSOM5z\n",
|
||||
"auth_tag": "fMDkg7q+SvsBQ72Hezp/kg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "nova_api",
|
||||
"nova_api": {
|
||||
"encrypted_data": "EhXSbK/GyMbON9NDITBH13PeYFCFIvKVhA==\n",
|
||||
"iv": "hNeyA7TEIyEsLcrK\n",
|
||||
"auth_tag": "Rbz4mBo5yJjc5ItQc/vt3w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "nova_cell0",
|
||||
"nova_cell0": {
|
||||
"encrypted_data": "0Bf80Cqrg2aKQKSPVzxVg0u7sRWZgsfwMQ==\n",
|
||||
"iv": "RGIPKZTPEq7P/f1O\n",
|
||||
"auth_tag": "ALzLFK5eudDu09i7fFKhQQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "credential_key0",
|
||||
"credential_key0": {
|
||||
"encrypted_data": "+f9m4yySSddKQBtexpObWadwsTdLx/i3zGh7Wk6CMyMRA20ULV+78sGxdNVV\nBNkzYYE7hvRGfwooukLMR2A2\n",
|
||||
"iv": "78lsGK/GVYn0LS0n\n",
|
||||
"auth_tag": "MqUKL3mM2w9HFQIW52Mmrw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "credential_key1",
|
||||
"credential_key1": {
|
||||
"encrypted_data": "X4ZCiHUUqW2iciwUquvYTg3l2bcUfmOoRFw6/uiDoZhiv5FC12+glQUeD8Av\n4NqqnZW4uhc1pMxfGT+QIfMv\n",
|
||||
"iv": "SRUjq+ioB90M8RW5\n",
|
||||
"auth_tag": "NCKVBRmyJ/Zov8u6z+OdNA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "designate_rndc",
|
||||
"designate_rndc": {
|
||||
"encrypted_data": "v6R5rtaKl8kX8he8+mQCLAXDzEPRwQrXe/z492sBuU7LFKJT46QZ6h2lS1z2\niwZl\n",
|
||||
"iv": "2KB8EXtT5QlZt84x\n",
|
||||
"auth_tag": "w4jeqIoZ4qdjYeVexlHt/w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "dispersion_auth_key",
|
||||
"dispersion_auth_key": {
|
||||
"encrypted_data": "HeVQA/lKX4qNEgEFt/0vCA8Toc/LAUBwExXScbNEXxAMyMgpNlwHjXBMtQQ=\n",
|
||||
"iv": "eu8zcZ8A5Oig5P/o\n",
|
||||
"auth_tag": "SpMmWA3LHMp+PGtYkf/xfQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "dispersion_auth_user",
|
||||
"dispersion_auth_user": {
|
||||
"encrypted_data": "gHo7WaSOAObn8i+0+zcDUNfnTsjvUK2D4qsLBHWJ+H3/ogSfiEhEWZXnL7s=\n",
|
||||
"iv": "NVAThQOlySVxRvAs\n",
|
||||
"auth_tag": "RZ+zA4MrFU5OMJYiPMGKvg==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "fernet_key0",
|
||||
"fernet_key0": {
|
||||
"encrypted_data": "klHq/xf9EeFPVxvSsIVYz7DNx0ZdgYiADbgczDQhkQOpiQiaxq2wcYsshQU6\nzFJsWHk51n1aV6wom1yxr5EG\n",
|
||||
"iv": "wGbJPBROV0BT0GKj\n",
|
||||
"auth_tag": "/uKKmB8n1Sh7IvI38gdIAQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "fernet_key1",
|
||||
"fernet_key1": {
|
||||
"encrypted_data": "tUt6KhUckQiU4EaP30WEDSdGPjqHxUOg+a9XV92VCcZufMzmw4/37W0fBwcq\nQn5JEDWtCXMx/YSp5eycT8ca\n",
|
||||
"iv": "EAn1lrxF0JzE5HDQ\n",
|
||||
"auth_tag": "lPF5aYF7UPefftSHJxWN9w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "neutron_metadata_secret",
|
||||
"neutron_metadata_secret": {
|
||||
"encrypted_data": "dx5dR20bfSpeOWnpNZOdXX3k55n/Um8rCyehVd8cVs5RmW+sAC9cm1qoKZKV\npXn1\n",
|
||||
"iv": "w1H81ZmPqJi61d8G\n",
|
||||
"auth_tag": "yOW31q48UYMJGNq0OvMgFQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack_identity_bootstrap_token",
|
||||
"openstack_identity_bootstrap_token": {
|
||||
"encrypted_data": "q+XJCRy2dcnHboSNCVrK5OR/IlAt+yqrclZ5rVKWJBhbqnMu8JRs0YrJ5QDp\nqQfOwQZQ1m4=\n",
|
||||
"iv": "rMo0P2WbLfZ5jF0b\n",
|
||||
"auth_tag": "p+O6G0A/W8zs0ybSdyUFoQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "orchestration_auth_encryption_key",
|
||||
"orchestration_auth_encryption_key": {
|
||||
"encrypted_data": "AvYQus6tO1Pb4WDeat/4RoCa+EjkIKX++C3/L9yJKD+tBhwv70lh4pTzvlUb\nyEn5zxn/\n",
|
||||
"iv": "8gcTvD9MWLpDm2P7\n",
|
||||
"auth_tag": "CCDQkdKJj4V8zyECammPTA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-block-storage",
|
||||
"openstack-block-storage": {
|
||||
"encrypted_data": "s2yk+YVL4l7s65EOhLjYnrQBsLVCTVvs+g==\n",
|
||||
"iv": "6NTjfnI0Wk554zoy\n",
|
||||
"auth_tag": "HQyedh4UeMmuG2FbzFGA8w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-compute",
|
||||
"openstack-compute": {
|
||||
"encrypted_data": "MSIjvrMJ8zoKynVmbqN6wGH3ajDjyRBQ1g==\n",
|
||||
"iv": "C8e2ZiqoBMJmpOxG\n",
|
||||
"auth_tag": "iwgLvTU87qwKp/QCdId0Rw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-dns",
|
||||
"openstack-dns": {
|
||||
"encrypted_data": "j0em/vC2AusGXFeTvDC8HfdSfemfIbnGHw==\n",
|
||||
"iv": "2hS/AGOuQiU8xZG9\n",
|
||||
"auth_tag": "R6MeBi0hJ815ReTxqWai3Q==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-image",
|
||||
"openstack-image": {
|
||||
"encrypted_data": "MrJFU9Q7tELsfnIwTV7KSqnpG4AcRJH5Vw==\n",
|
||||
"iv": "5uuInaFjGEih389e\n",
|
||||
"auth_tag": "N7vpAf4VVE3xeu8/CLDnEA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-network",
|
||||
"openstack-network": {
|
||||
"encrypted_data": "pMz/lN8yVtGPxx4k4pz3WevMBVDSmyZQ+Q==\n",
|
||||
"iv": "T6r9Z1f9DEdteOYx\n",
|
||||
"auth_tag": "goz/UtgFspuvVWYqkhCt+Q==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-orchestration",
|
||||
"openstack-orchestration": {
|
||||
"encrypted_data": "AONHb8jlwFnR6wYYUPs2UW9z8YPbPJRYSg==\n",
|
||||
"iv": "38Q/5TBLSllprHIr\n",
|
||||
"auth_tag": "pp7lNVqpAPTwyZTVicB/dA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-placement",
|
||||
"openstack-placement": {
|
||||
"encrypted_data": "7yqlY8nn6f9g5cYAIfFCSLm76myRQ5P8Ww==\n",
|
||||
"iv": "3iTD7QItyaWeA1mS\n",
|
||||
"auth_tag": "FJlBLrqR0vzQ4S4HqKQn5A==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-telemetry-metric",
|
||||
"openstack-telemetry-metric": {
|
||||
"encrypted_data": "juCRbZ2FSKbxW16ReEAYi/3Oh7iEuFDQhg==\n",
|
||||
"iv": "0UxtUNC27DuIcwEK\n",
|
||||
"auth_tag": "hUeVIaa2QwsrH5bRYK0COw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "openstack-telemetry",
|
||||
"openstack-telemetry": {
|
||||
"encrypted_data": "H7th9qXm+tLXZ7e2rIJ1aytuWEmCRIFqTg==\n",
|
||||
"iv": "yBz5NfZQzHlWGZG8\n",
|
||||
"auth_tag": "x3q2zr8xrA+xZL3bVSwO9w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "admin",
|
||||
"admin": {
|
||||
"encrypted_data": "rSGFmgUQACPxmJ2mXXtkPZeltLZTXVzgzg==\n",
|
||||
"iv": "Gf5d3TwsTCv9eOqy\n",
|
||||
"auth_tag": "E034utXmdnB36z0+2abBAA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "guest",
|
||||
"guest": {
|
||||
"encrypted_data": "rwMD8pWaNwi6yAVJmOOm69gIw0k/U3R9gg==\n",
|
||||
"iv": "OFXSz4YuieFSfGdL\n",
|
||||
"auth_tag": "8pxujYDPebuGsrntDl8jAw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"id": "heat_domain_admin",
|
||||
"heat_domain_admin": {
|
||||
"encrypted_data": "IKsB83OypkqYkR89/Rfw4lCi3FjA72FWGw==\n",
|
||||
"iv": "MTk0WWG+Yk85Z1C7\n",
|
||||
"auth_tag": "+W4IH3x9+ZFCTl+ZTJF7LQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
}
|
@ -1,10 +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.
|
||||
|
||||
# this is required for the docs build jobs
|
||||
sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
|
||||
openstackdocstheme>=1.18.1 # Apache-2.0
|
||||
reno>=2.5.0 # Apache-2.0
|
||||
sphinxmark>=0.1.14 # Apache-2.0
|
||||
doc8>=0.6.0 # Apache-2.0
|
@ -1,217 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file does only contain a selection of the most common options. For a
|
||||
# full list see the documentation:
|
||||
# http://www.sphinx-doc.org/en/stable/config.html
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
import imp
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
import openstackdocstheme
|
||||
|
||||
# -- Chef OpenStack configuration --------------------------------------------
|
||||
target_name = 'chef-openstack-docs'
|
||||
description = 'Chef OpenStack uses Chef to deploy OpenStack environments.'
|
||||
previous_series_name = 'pike'
|
||||
current_series_name = 'queens'
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
title = u'Chef OpenStack Documentation'
|
||||
category = 'Miscellaneous'
|
||||
copyright = u'2014-2018, Chef OpenStack Contributors'
|
||||
author = u'Chef OpenStack Contributors'
|
||||
|
||||
current_series = openstackdocstheme.ext._get_series_name()
|
||||
|
||||
if current_series == "latest":
|
||||
watermark = "Pre-release"
|
||||
latest_tag = "master"
|
||||
branch = "master"
|
||||
upgrade_warning = "Upgrading to master is not recommended. Master is under heavy development, and is not stable."
|
||||
else:
|
||||
watermark = series_names = current_series.capitalize()
|
||||
latest_tag = os.popen('git describe --abbrev=0 --tags').read().strip('\n')
|
||||
branch = "stable/{}".format(current_series)
|
||||
upgrade_warning = "The upgrade is always under active development."
|
||||
|
||||
# Substitutions loader
|
||||
rst_epilog = """
|
||||
.. |current_release_git_branch_name| replace:: {current_release_git_branch_name}
|
||||
.. |previous_release_formal_name| replace:: {previous_release_formal_name}
|
||||
.. |current_release_formal_name| replace:: {current_release_formal_name}
|
||||
.. |latest_tag| replace:: {latest_tag}
|
||||
.. |upgrade_warning| replace:: {upgrade_warning}
|
||||
""".format(
|
||||
current_release_git_branch_name=branch,
|
||||
previous_release_formal_name=previous_series_name.capitalize(),
|
||||
current_release_formal_name=current_series_name.capitalize(),
|
||||
latest_tag=latest_tag,
|
||||
upgrade_warning=upgrade_warning,
|
||||
)
|
||||
|
||||
# -- 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',
|
||||
'sphinx.ext.extlinks',
|
||||
'sphinx.ext.viewcode',
|
||||
'sphinxmark'
|
||||
]
|
||||
|
||||
todo_include_docs = True
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# openstackdocstheme options
|
||||
repository_name = 'openstack/openstack-chef-repo'
|
||||
bug_project = 'openstack-chef'
|
||||
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
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path .
|
||||
exclude_patterns = ['_build']
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# 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'
|
||||
|
||||
# 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 not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
html_last_updated_fmt = '%Y-%m-%d %H:%M'
|
||||
|
||||
# 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 = {}
|
||||
|
||||
# The default sidebars (for documents that don't match any pattern) are
|
||||
# defined by theme itself. Builtin themes are using these templates by
|
||||
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
|
||||
# 'searchbox.html']``.
|
||||
#
|
||||
# html_sidebars = {}
|
||||
|
||||
|
||||
# -- Options for HTMLHelp output ---------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'chef-openstack-docs'
|
||||
|
||||
# If true, publish source files
|
||||
html_copy_source = False
|
||||
|
||||
# -- 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'),
|
||||
]
|
||||
|
||||
# -- 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)
|
||||
]
|
||||
|
||||
|
||||
# -- 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, bug_project,
|
||||
description, category),
|
||||
]
|
||||
|
||||
# -- Options for PDF output --------------------------------------------------
|
||||
|
||||
pdf_documents = [
|
||||
(master_doc, target_name,
|
||||
title, author)
|
||||
]
|
||||
|
||||
# -- Options for sphinxmark -----------------------------------------------
|
||||
sphinxmark_enable = True
|
||||
sphinxmark_div = 'docs-body'
|
||||
sphinxmark_image = 'text'
|
||||
sphinxmark_text = watermark
|
||||
sphinxmark_text_color = (128, 128, 128)
|
||||
sphinxmark_text_size = 70
|
||||
|
@ -1,26 +0,0 @@
|
||||
.. _ci:
|
||||
|
||||
######################
|
||||
Continuous Integration
|
||||
######################
|
||||
|
||||
This is a list of the CI jobs that are running against most of the Chef
|
||||
OpenStack cookbooks. The code that configures Zuul jobs is hosted in
|
||||
`openstack-chef-repo <https://git.openstack.org/cgit/openstack/openstack-chef-repo/tree/playbooks/>`_.
|
||||
|
||||
.. list-table:: **CI Jobs in Chef OpenStack**
|
||||
:widths: 31 25 8 55
|
||||
:header-rows: 1
|
||||
|
||||
* - Job name
|
||||
- Description
|
||||
- Voting
|
||||
- If it fails
|
||||
* - openstack-chef-repo-rake
|
||||
- It ensures the code follows the `Chef style guidelines <https://docs.chef.io/ruby.html>`_.
|
||||
- Yes
|
||||
- Read the build logs to see which part of the code does not follow the recommended patterns.
|
||||
* - openstack-chef-repo-integration
|
||||
- Functional testing job that converges OpenStack, testing using Tempest.
|
||||
- Yes
|
||||
- Read the build logs to see where the failure originated.
|
@ -1,39 +0,0 @@
|
||||
=========
|
||||
Community
|
||||
=========
|
||||
|
||||
Governance
|
||||
==========
|
||||
|
||||
Chef OpenStack governance is well defined and `documented`_. It documents:
|
||||
|
||||
* The current Project Team Lead
|
||||
* The mission statement
|
||||
* The repositories managed by the group
|
||||
|
||||
PTL duty
|
||||
========
|
||||
|
||||
While the official OpenStack PTL duty `guide`_ is general, the Chef
|
||||
OpenStack PTL is usually in charge of:
|
||||
|
||||
* continuity of the project. This can include reviewing or writing code.
|
||||
* OpenStack cross-project liaison.
|
||||
* meeting organization.
|
||||
|
||||
Core reviewers team
|
||||
===================
|
||||
|
||||
Chef OpenStack has a `core reviewers`_ team, that can merge any code in our
|
||||
repositories.
|
||||
|
||||
Release management
|
||||
==================
|
||||
|
||||
Releases are currently managed by the release `subteam`_. This is sometimes a
|
||||
PTL task. This includes updating Supermarket.
|
||||
|
||||
.. _documented: https://governance.openstack.org/reference/projects/chef-openstack.html
|
||||
.. _core reviewers: https://review.openstack.org/#/admin/groups/1260,members
|
||||
.. _subteam: https://review.openstack.org/#/admin/groups/1261,members
|
||||
.. _guide: https://docs.openstack.org/project-team-guide/ptl.html
|
@ -1,37 +0,0 @@
|
||||
=============
|
||||
Cookbook List
|
||||
=============
|
||||
|
||||
Each Chef OpenStack cookbook corresponds to an OpenStack component and has its
|
||||
own git repository. The cookbooks produce a number of deliverables, in order to
|
||||
achieve a clearly stated objective: deploy OpenStack.
|
||||
|
||||
OpenStack Cookbooks
|
||||
===================
|
||||
|
||||
* `Block Storage <https://git.openstack.org/cgit/openstack/cookbook-openstack-block-storage/>`_ (*Cinder*)
|
||||
* `Compute <https://git.openstack.org/cgit/openstack/cookbook-openstack-compute/>`_ (*Nova*)
|
||||
* `Dashboard <https://git.openstack.org/cgit/openstack/cookbook-openstack-dashboard/>`_ (*Horizon*)
|
||||
* `DNS <https://git.openstack.org/cgit/openstack/cookbook-openstack-dns/>`_ (*Designate*)
|
||||
* `Image <https://git.openstack.org/cgit/openstack/cookbook-openstack-image/>`_ (*Glance*)
|
||||
* `Network <https://git.openstack.org/cgit/openstack/cookbook-openstack-network/>`_ (*Neutron*)
|
||||
* `Orchestration <https://git.openstack.org/cgit/openstack/cookbook-openstack-orchestration/>`_ (*Heat*)
|
||||
* `Telemetry <https://git.openstack.org/cgit/openstack/cookbook-openstack-telemetry/>`_ (*Ceilometer*/*Gnocchi*)
|
||||
|
||||
Operations Cookbooks
|
||||
====================
|
||||
* `Database <https://git.openstack.org/cgit/openstack/cookbook-openstack-ops-database/>`_ (*MariaDB*/*MySQL*)
|
||||
* `Messaging <https://git.openstack.org/cgit/openstack/cookbook-openstack-ops-messaging/>`_ (*RabbitMQ*)
|
||||
|
||||
Supporting Repositories
|
||||
=======================
|
||||
* `Client <https://git.openstack.org/cgit/openstack/cookbook-openstackclient>`_ (LWRPs for using fog-openstack inside Chef recipes)
|
||||
* `Integration Test <https://git.openstack.org/cgit/openstack/cookbook-openstack-integration-test/>`_ (Build cookbook to deploy and test using Tempest)
|
||||
|
||||
Unmaintained Cookbooks
|
||||
==============================
|
||||
* `Object Storage <https://git.openstack.org/cgit/openstack/cookbook-openstack-object-storage/>`_ (*Swift*)
|
||||
* `Bare Metal <https://git.openstack.org/cgit/openstack/cookbook-openstack-bare-metal/>`_ (*Ironic*)
|
||||
* `Data Processing <https://git.openstack.org/cgit/openstack/cookbook-openstack-data-processing/>`_ (*Sahara*)
|
||||
* `Application Catalog <https://git.openstack.org/cgit/openstack/cookbook-openstack-application-catalog/>`_ (*Murano*)
|
||||
* `Database as a Service <https://git.openstack.org/cgit/openstack/cookbook-openstack-database/>`_ (*Trove*)
|
@ -1,9 +0,0 @@
|
||||
======================
|
||||
How to submit a change
|
||||
======================
|
||||
|
||||
Do you want to submit a change to OpenStack?
|
||||
|
||||
Review the `Developer's Guide`_.
|
||||
|
||||
.. _Developer's Guide: https://docs.openstack.org/infra/manual/developers.html
|
@ -1,12 +0,0 @@
|
||||
Contributor Guide
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:includehidden:
|
||||
|
||||
cookbook-list
|
||||
how-to-contribute
|
||||
community
|
||||
talk-to-us
|
||||
ci
|
@ -1,15 +0,0 @@
|
||||
.. _mailing_list:
|
||||
|
||||
=============
|
||||
Mailing lists
|
||||
=============
|
||||
|
||||
The mailing lists are preferred, as it makes the information more readily available so that others who have the same question or issue can search for and find the answers.
|
||||
|
||||
- Dev discussions:
|
||||
`openstack-dev@lists.openstack.org <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>`__
|
||||
with ``[chef]`` tag.
|
||||
- Usage discussions:
|
||||
`openstack-operators@lists.openstack.org <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators>`__
|
||||
with ``[chef]`` tag.
|
||||
|
@ -1,32 +0,0 @@
|
||||
.. _meetings:
|
||||
|
||||
########
|
||||
Meetings
|
||||
########
|
||||
|
||||
1. `General Availability`_
|
||||
2. `IRC Meetings`_
|
||||
|
||||
General Availability
|
||||
====================
|
||||
|
||||
The Chef OpenStack team is distributed around the world, but comes together on
|
||||
IRC_ between the hours of 14:00 UTC and 17:00 UTC.
|
||||
|
||||
.. _IRC: talk-to-us.html
|
||||
|
||||
IRC Meetings
|
||||
============
|
||||
|
||||
We hold public meetings as needed on ``#openstack-chef`` on Freenode. If a
|
||||
meeting needs to be held, it will be announced on the OpenStack-dev mailing
|
||||
list.
|
||||
|
||||
.. list-table::
|
||||
:widths: 30 60
|
||||
:header-rows: 1
|
||||
|
||||
* - Meeting Time
|
||||
- Local Time
|
||||
* - UTC 1500 Mondays as needed
|
||||
- https://www.timeanddate.com/worldclock/converter.html
|
@ -1,14 +0,0 @@
|
||||
==========
|
||||
Talk to us
|
||||
==========
|
||||
|
||||
* Find us on `Freenode <https://freenode.net/>`_. Join the ``#openstack-chef`` channel.
|
||||
* Join the conversation on the `mailing lists <mailing-list.html>`_.
|
||||
* Participate in or propose `an IRC meeting <meetings.html>`_.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
mailing-list
|
||||
meetings
|
@ -1,23 +0,0 @@
|
||||
Chef OpenStack Documentation
|
||||
============================
|
||||
|
||||
The Chef cookbooks for OpenStack automate the building, operation and
|
||||
consumption of OpenStack cloud deployments.
|
||||
|
||||
Contributor Guide
|
||||
-----------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:includehidden:
|
||||
|
||||
contributor/index
|
||||
|
||||
Install Guide
|
||||
-------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:includehidden:
|
||||
|
||||
install/index
|
@ -1,56 +0,0 @@
|
||||
=========
|
||||
Genealogy
|
||||
=========
|
||||
|
||||
- `Releases Summary`_
|
||||
- `Supermarket Releases`_
|
||||
- `How to release Chef cookbooks`_
|
||||
|
||||
Releases Summary
|
||||
================
|
||||
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| Module Version | OpenStack Version Codename | Community Supported |
|
||||
+============================+==============================+========================+
|
||||
| 7.y.z | Grizzly | no - EOL (2014-03-29) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 8.y.z | Havana | no - EOL (2014-09-30) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 9.y.z | Icehouse | no - EOL (2015-07-02) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 10.z.y | Juno | no - EOL (2015-12-07) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 11.z.y | Kilo | no - EOL (2016-05-02) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 12.z.y | Liberty | no - EOL (2016-11-17) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 13.z.y | Mitaka | no - EOL (2017-04-10) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 14.z.y | Newton | yes - EOL (2017-10-11) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 15.z.y | Ocata | yes - EOL (2017-02-26) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 16.z.y | Pike | yes |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 17.z.y | Queens | yes (current master) |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
| 18.z.y | Rocky | Future |
|
||||
+----------------------------+------------------------------+------------------------+
|
||||
|
||||
Supermarket releases
|
||||
====================
|
||||
|
||||
- From Ocata, the cookbooks are released on the Chef Supermarket_.
|
||||
|
||||
.. _Supermarket: https://supermarket.chef.io/openstack
|
||||
|
||||
How to release Chef cookbooks
|
||||
=============================
|
||||
|
||||
- A core member will create the new branch based on the desired SHA.
|
||||
Example: https://review.openstack.org/#/admin/projects/openstack/cookbook-openstack-compute,branches
|
||||
- For all cookbooks to be released: update .gitreview, Berksfile,
|
||||
and bootstrap.sh to stable/<release>
|
||||
Example: https://review.openstack.org/547505
|
||||
- Create a review with the above and propose it against the stable/<release> branch.
|
||||
- Solicit for reviews and approval.
|
@ -1,21 +0,0 @@
|
||||
===============
|
||||
Getting Started
|
||||
===============
|
||||
|
||||
Learn about Chef OpenStack
|
||||
==========================
|
||||
|
||||
* To learn about the Chef automation framework,
|
||||
consult the `online documentation <https://docs.chef.io>`_ or
|
||||
`Learn Chef <https://learn.chef.io>`_.
|
||||
* `Supported Platforms <supported-platforms.html>`_
|
||||
* `Deploy <quickstart.html>`_ on your own development OpenStack Cloud with `Test Kitchen <https://kitchen.ci>`_.
|
||||
* Chef OpenStack `genealogy <genealogy.html>`_.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
supported-platforms
|
||||
quickstart
|
||||
genealogy
|
@ -1,11 +0,0 @@
|
||||
Install Guide
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:includehidden:
|
||||
|
||||
getting-started
|
||||
quickstart
|
||||
genealogy
|
||||
supported-platforms
|
@ -1,102 +0,0 @@
|
||||
.. _quickstart-test-kitchen:
|
||||
|
||||
`Test Kitchen`_ is a no-fuss, no BS way to get a Chef OpenStack build for:
|
||||
|
||||
* development of OpenStack or applications on top of it
|
||||
* a reference for how the services fit together
|
||||
* a simple lab environment
|
||||
|
||||
.. _Test Kitchen: https://kitchen.ci/
|
||||
|
||||
Test Kitchen builds are not recommended for production deployments, but they can work in
|
||||
a pinch when you just need OpenStack.
|
||||
|
||||
At an absolute minimum, you should use the following resources. What is listed
|
||||
is currently used in CI for the gate checks, as well as the tested minimum:
|
||||
|
||||
* 8 vCPU (tests as low as 4, but it tends to get CPU bound)
|
||||
* 8 GB RAM (7 GB sort of works, but it's tight - expect OOM/slowness)
|
||||
* 50 GB free disk space on the root partition
|
||||
|
||||
Recommended server resources:
|
||||
|
||||
* CPU/motherboard that supports `hardware-assisted virtualization`_
|
||||
* 8 CPU cores
|
||||
* 16 GB RAM
|
||||
* 80 GB free disk space on the root partition, or 50+ GB on a blank secondary volume.
|
||||
|
||||
It is `possible` to perform builds within a virtual machine for
|
||||
demonstration and evaluation, but your virtual machines will perform poorly.
|
||||
For production workloads, multiple nodes for specific roles are recommended.
|
||||
|
||||
.. _hardware-assisted virtualization: https://en.wikipedia.org/wiki/Hardware-assisted_virtualization
|
||||
|
||||
Building with Test Kitchen
|
||||
--------------------------
|
||||
|
||||
There are three basic steps to building OpenStack with Test Kitchen, with an optional first step should you need to customize your build:
|
||||
|
||||
* Configuration *(this step is optional)*
|
||||
* Install and bootstrap the Chef Development Kit
|
||||
* Run Test Kitchen
|
||||
|
||||
When building on a new server, it is recommended that all system
|
||||
packages are updated and then rebooted into the new kernel:
|
||||
|
||||
.. note:: Execute the following commands and scripts as the root user.
|
||||
|
||||
.. code-block:: shell-session
|
||||
|
||||
## Ubuntu
|
||||
# apt-get update
|
||||
# apt-get dist-upgrade
|
||||
# reboot
|
||||
|
||||
.. code-block:: shell-session
|
||||
|
||||
## CentOS
|
||||
# yum upgrade
|
||||
# reboot
|
||||
|
||||
Start by cloing the OpenStack chef-repo repository and changing into the root directory:
|
||||
|
||||
.. code-block:: shell-session
|
||||
|
||||
# git clone https://git.openstack.org/openstack/openstack-chef-repo \
|
||||
/opt/openstack-chef-repo
|
||||
# cd openstack-chef-repo
|
||||
|
||||
Next, switch to the applicable branch/tag to be deployed. Note that deploying
|
||||
from the head of a branch may result in an unstable build due to changes in
|
||||
flight and upstream OpenStack changes. For a test (not a development) build, it
|
||||
is usually best to checkout the latest tagged version.
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
## List all existing branches.
|
||||
# git branch -v
|
||||
|
||||
## Checkout the stable branch
|
||||
# git checkout |current_release_git_branch_name|
|
||||
|
||||
.. note::
|
||||
The |current_release_formal_name| release is compatible with Ubuntu 16.04
|
||||
(Xenial Xerus) and CentOS 7
|
||||
|
||||
By default the cookbooks deploy all OpenStack services with sensible defaults
|
||||
for the purpose of a gate check, development or testing system.
|
||||
|
||||
Deployers have the option to change how the build is configured by overriding
|
||||
in the respective kitche YAML file. This can be useful when you want to make
|
||||
use of different services or test new cookbooks.
|
||||
|
||||
To use a different driver for Test Kitchen, such as for a multi-node
|
||||
development environment, pass the ``KITCHEN_YAML`` environment variable as an
|
||||
additional option to the ``kitchen`` command. For example, if you want to
|
||||
deploy a multi-node development environment, instead of an AIO, then execute:
|
||||
|
||||
.. code-block:: shell-session
|
||||
|
||||
# KITCHEN_YAML=.kitchen.multi.yml kitchen converge [7|1604|all]
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
Supported Platforms
|
||||
===================
|
||||
|
||||
The following operating systems and versions are supported by the OpenStack cookbooks:
|
||||
|
||||
* RHEL / CentOS 7
|
||||
* Ubuntu 16.04 LTS (Xenial Xerus)
|
||||
|
||||
The cookbooks are tested and verified to work on the Chef stable track using
|
||||
the `Chef Development Kit <https://docs.chef.io/about_chefdk.html>`_.
|
||||
|
||||
Your success rate may vary with the bleeding edge. Chef 12 and older is NOT
|
||||
supported.
|
||||
|
||||
See `Chef CI <http://docs.openstack.org/developer/chef-openstack-guide/ci.html>`_
|
||||
to see what is currently tested.
|
@ -1,55 +0,0 @@
|
||||
{
|
||||
"name": "allinone",
|
||||
"description": "Environment used in testing the upstream cookbooks and reference Chef repository with vagrant. To be used with the vagrantfile-allinone vagrantfile. Defines the necessary attributes for a working all-in-one openstack deployment, using neutron for the networking component, and the openvswitch neutron plugin",
|
||||
"default_attributes": {
|
||||
"apache": {
|
||||
"listen": [
|
||||
|
||||
]
|
||||
},
|
||||
"yum": {
|
||||
"epel": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"override_attributes": {
|
||||
"openstack": {
|
||||
"is_release": true,
|
||||
"apt": {
|
||||
"update_apt_cache": "true"
|
||||
},
|
||||
"telemetry": {
|
||||
"conf": {
|
||||
"DEFAULT": {
|
||||
"meter_dispatchers": "database"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"server_hostname": "localhost"
|
||||
},
|
||||
"mq": {
|
||||
"user": "admin"
|
||||
},
|
||||
"network": {
|
||||
"conf": {
|
||||
"DEFAULT": {
|
||||
"service_plugins": "router"
|
||||
}
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"image_upload": true
|
||||
},
|
||||
"compute": {
|
||||
"conf": {
|
||||
"libvirt": {
|
||||
"cpu_type": "none",
|
||||
"virt_type": "qemu"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
{
|
||||
"name": "integration",
|
||||
"description": "Chef environment file for building OpenStack in CI settings. Certain Tempest services are disabled in this scenario",
|
||||
"default_attributes": {
|
||||
"apache": {
|
||||
"listen": [
|
||||
|
||||
]
|
||||
},
|
||||
"yum": {
|
||||
"epel": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"override_attributes": {
|
||||
"openstack": {
|
||||
"is_release": true,
|
||||
"apt": {
|
||||
"update_apt_cache": true
|
||||
},
|
||||
"telemetry": {
|
||||
"conf": {
|
||||
"DEFAULT": {
|
||||
"meter_dispatchers": "database"
|
||||
}
|
||||
}
|
||||
},
|
||||
"integration-test": {
|
||||
"conf": {
|
||||
"service_available": {
|
||||
"ceilometer": false,
|
||||
"heat": false,
|
||||
"horizon": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"server_hostname": "localhost"
|
||||
},
|
||||
"memcached_servers": [
|
||||
"127.0.0.1:11211"
|
||||
],
|
||||
"mq": {
|
||||
"user": "admin"
|
||||
},
|
||||
"network": {
|
||||
"conf": {
|
||||
"DEFAULT": {
|
||||
"service_plugins": "router"
|
||||
}
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"image_upload": true
|
||||
},
|
||||
"compute": {
|
||||
"conf": {
|
||||
"libvirt": {
|
||||
"cpu_type": "none",
|
||||
"virt_type": "qemu"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,235 +0,0 @@
|
||||
{
|
||||
"name": "multinode",
|
||||
"default_attributes": {
|
||||
"apache": {
|
||||
"listen": [
|
||||
|
||||
]
|
||||
},
|
||||
"yum": {
|
||||
"epel": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"override_attributes": {
|
||||
"openstack": {
|
||||
"apt": {
|
||||
"unattended_upgrades": {
|
||||
"enable": false
|
||||
},
|
||||
"update_apt_cache": true
|
||||
},
|
||||
"sysctl": {
|
||||
"net.ipv4.ip_forward": 1
|
||||
},
|
||||
"endpoints": {
|
||||
"db": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"mq": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"admin": {
|
||||
"identity": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"network": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"image_api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"image_registry": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"block-storage": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-metadata-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-novnc": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"orchestration-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"orchestration-api-cfn": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"placement-api": {
|
||||
"host": "192.168.101.60"
|
||||
}
|
||||
},
|
||||
"internal": {
|
||||
"identity": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"network": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"image_api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"image_registry": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"block-storage": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-metadata-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-novnc": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"orchestration-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"orchestration-api-cfn": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"placement-api": {
|
||||
"host": "192.168.101.60"
|
||||
}
|
||||
},
|
||||
"public": {
|
||||
"identity": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"network": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"image_api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"image_registry": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"block-storage": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-metadata-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"compute-novnc": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"orchestration-api": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"orchestration-api-cfn": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"placement-api": {
|
||||
"host": "192.168.101.60"
|
||||
}
|
||||
}
|
||||
},
|
||||
"bind_service": {
|
||||
"db": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"mq": {
|
||||
"host": "192.168.101.60"
|
||||
},
|
||||
"main": {
|
||||
"identity": {
|
||||
"host": "0.0.0.0"
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"identity": {
|
||||
"host": "0.0.0.0"
|
||||
}
|
||||
},
|
||||
"all": {
|
||||
"network": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"image_api": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"image_registry": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"block-storage": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"compute-api": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"compute-metadata-api": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"compute-novnc": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"orchestration-api": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"orchestration-api-cfn": {
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"placement-api": {
|
||||
"host": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"server_hostname": "localhost"
|
||||
},
|
||||
"mq": {
|
||||
"user": "admin"
|
||||
},
|
||||
"network": {
|
||||
"plugins": {
|
||||
"ml2_openvswitch": {
|
||||
"conf": {
|
||||
"ml2_type_vxlan": {
|
||||
"vni_ranges": "65537:69999",
|
||||
"vxlan_group": "239.1.1.40"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tun_network_bridge_interface": "enp0s8",
|
||||
"conf": {
|
||||
"DEFAULT": {
|
||||
"service_plugins": "router"
|
||||
},
|
||||
"transport_url": {
|
||||
"rabbit_host": "192.168.101.60"
|
||||
},
|
||||
"ml2": {
|
||||
"tenant_network_types": "vxlan"
|
||||
}
|
||||
}
|
||||
},
|
||||
"image": {
|
||||
"image_upload": true
|
||||
},
|
||||
"compute": {
|
||||
"conf": {
|
||||
"libvirt": {
|
||||
"cpu_type": "none",
|
||||
"virt_type": "qemu"
|
||||
},
|
||||
"transport_url": {
|
||||
"rabbit_host": "192.168.101.60"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
- hosts: all
|
||||
roles:
|
||||
- revoke-sudo
|
||||
tasks:
|
||||
- name: run delivery local
|
||||
shell:
|
||||
cmd: chef exec delivery local all
|
||||
chdir: '{{ zuul.project.src_dir }}'
|
@ -1,8 +0,0 @@
|
||||
- hosts: all
|
||||
tasks:
|
||||
- name: run integration
|
||||
shell:
|
||||
cmd: chef exec rake integration
|
||||
chdir: '{{ ansible_user_dir }}/src/git.openstack.org/openstack/openstack-chef-repo'
|
||||
environment:
|
||||
WORKSPACE: '{{ ansible_user_dir }}'
|
@ -1,7 +0,0 @@
|
||||
- hosts: all
|
||||
tasks:
|
||||
- name: Collect logs
|
||||
synchronize:
|
||||
dest: '{{ zuul.executor.log_root }}/{{ inventory_hostname }}'
|
||||
mode: pull
|
||||
src: '{{ ansible_user_dir }}/logs/'
|
@ -1,19 +0,0 @@
|
||||
- hosts: all
|
||||
roles:
|
||||
- bindep
|
||||
vars:
|
||||
bindep_file: /home/zuul/src/git.openstack.org/openstack/openstack-chef-repo/bindep.txt
|
||||
|
||||
- hosts: all
|
||||
vars:
|
||||
release: 3.1.0
|
||||
chefdk: chefdk_{{ release }}-1_amd64.deb
|
||||
tasks:
|
||||
- name: Fetch chefdk package
|
||||
get_url:
|
||||
dest: /tmp/{{ chefdk }}
|
||||
url: https://packages.chef.io/files/stable/chefdk/{{ release }}/ubuntu/16.04/{{ chefdk }}
|
||||
- name: Install chefdk package
|
||||
shell: dpkg -i /tmp/{{ chefdk }}
|
||||
become: yes
|
||||
|
@ -1,8 +0,0 @@
|
||||
- hosts: all
|
||||
roles:
|
||||
- revoke-sudo
|
||||
tasks:
|
||||
- name: run rake tests
|
||||
shell:
|
||||
cmd: chef exec rake
|
||||
chdir: '{{ zuul.project.src_dir }}'
|
@ -1,56 +0,0 @@
|
||||
{
|
||||
"name": "allinone",
|
||||
"description": "This will deploy all of the services for Openstack Compute to function on a single box.",
|
||||
"run_list": [
|
||||
"recipe[build-essential]",
|
||||
"recipe[openstack-common]",
|
||||
"recipe[openstack-common::logging]",
|
||||
"recipe[openstack-common::sysctl]",
|
||||
"recipe[openstack-common::python]",
|
||||
"recipe[openstack-common::client]",
|
||||
"recipe[openstack-common::etcd]",
|
||||
"recipe[openstack-ops-database::server]",
|
||||
"recipe[openstack-ops-database::openstack-db]",
|
||||
"recipe[openstack-ops-messaging::rabbitmq-server]",
|
||||
"recipe[openstack-identity::server-apache]",
|
||||
"recipe[openstack-identity::registration]",
|
||||
"recipe[openstack-identity::openrc]",
|
||||
"recipe[openstack-image::api]",
|
||||
"recipe[openstack-image::registry]",
|
||||
"recipe[openstack-image::identity_registration]",
|
||||
"recipe[openstack-network::identity_registration]",
|
||||
"recipe[openstack-network::ml2_core_plugin]",
|
||||
"recipe[openstack-network::ml2_openvswitch]",
|
||||
"recipe[openstack-network]",
|
||||
"recipe[openstack-network::openvswitch]",
|
||||
"recipe[openstack-network::_bridge_config_example]",
|
||||
"recipe[openstack-network::plugin_config]",
|
||||
"recipe[openstack-network::server]",
|
||||
"recipe[openstack-network::l3_agent]",
|
||||
"recipe[openstack-network::dhcp_agent]",
|
||||
"recipe[openstack-network::metadata_agent]",
|
||||
"recipe[openstack-network::openvswitch_agent]",
|
||||
"recipe[openstack-compute::nova-setup]",
|
||||
"recipe[openstack-compute::identity_registration]",
|
||||
"recipe[openstack-compute::conductor]",
|
||||
"recipe[openstack-compute::api-os-compute]",
|
||||
"recipe[openstack-compute::api-metadata]",
|
||||
"recipe[openstack-compute::placement_api]",
|
||||
"recipe[openstack-compute::scheduler]",
|
||||
"recipe[openstack-compute::vncproxy]",
|
||||
"recipe[openstack-compute::compute]",
|
||||
"recipe[openstack-compute::identity_registration]",
|
||||
"recipe[openstack-block-storage::api]",
|
||||
"recipe[openstack-block-storage::scheduler]",
|
||||
"recipe[openstack-block-storage::volume_driver_lvm]",
|
||||
"recipe[openstack-block-storage::volume]",
|
||||
"recipe[openstack-block-storage::backup]",
|
||||
"recipe[openstack-block-storage::identity_registration]",
|
||||
"recipe[openstack-dns::api]",
|
||||
"recipe[openstack-dns::central]",
|
||||
"recipe[openstack-dns::identity_registration]",
|
||||
"recipe[openstack-image::image_upload]",
|
||||
"recipe[openstack-dashboard::horizon]",
|
||||
"recipe[openstack-dashboard::neutron-lbaas-dashboard]"
|
||||
]
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
{
|
||||
"name": "minimal",
|
||||
"description": "This will deploy a minimal set of services for Openstack Compute to function for integration testing.",
|
||||
"run_list": [
|
||||
"recipe[openstack-common]",
|
||||
"recipe[openstack-common::logging]",
|
||||
"recipe[openstack-common::sysctl]",
|
||||
"recipe[openstack-common::client]",
|
||||
"recipe[openstack-ops-database::server]",
|
||||
"recipe[openstack-ops-database::openstack-db]",
|
||||
"recipe[openstack-ops-messaging::rabbitmq-server]",
|
||||
"recipe[openstack-identity::server-apache]",
|
||||
"recipe[openstack-identity::registration]",
|
||||
"recipe[openstack-identity::openrc]",
|
||||
"recipe[openstack-image::api]",
|
||||
"recipe[openstack-image::registry]",
|
||||
"recipe[openstack-image::identity_registration]",
|
||||
"recipe[openstack-network::identity_registration]",
|
||||
"recipe[openstack-network::ml2_core_plugin]",
|
||||
"recipe[openstack-network::ml2_openvswitch]",
|
||||
"recipe[openstack-network]",
|
||||
"recipe[openstack-network::openvswitch]",
|
||||
"recipe[openstack-network::_bridge_config_example]",
|
||||
"recipe[openstack-network::plugin_config]",
|
||||
"recipe[openstack-network::server]",
|
||||
"recipe[openstack-network::l3_agent]",
|
||||
"recipe[openstack-network::dhcp_agent]",
|
||||
"recipe[openstack-network::metadata_agent]",
|
||||
"recipe[openstack-network::openvswitch_agent]",
|
||||
"recipe[openstack-compute::nova-setup]",
|
||||
"recipe[openstack-compute::identity_registration]",
|
||||
"recipe[openstack-compute::conductor]",
|
||||
"recipe[openstack-compute::api-os-compute]",
|
||||
"recipe[openstack-compute::api-metadata]",
|
||||
"recipe[openstack-compute::placement_api]",
|
||||
"recipe[openstack-compute::scheduler]",
|
||||
"recipe[openstack-compute::vncproxy]",
|
||||
"recipe[openstack-compute::compute]",
|
||||
"recipe[openstack-image::image_upload]",
|
||||
"recipe[openstack-integration-test::create_network]",
|
||||
"recipe[openstack-integration-test::setup]",
|
||||
"recipe[openstack-integration-test::run_tempest]"
|
||||
]
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"name": "multinode-compute",
|
||||
"description": "This will deploy a compute node for a scenarios with just compute and controller nodes",
|
||||
"run_list": [
|
||||
"recipe[build-essential]",
|
||||
"recipe[openstack-common]",
|
||||
"recipe[openstack-compute::compute]",
|
||||
"recipe[openstack-compute::identity_registration]",
|
||||
"recipe[openstack-network::ml2_core_plugin]",
|
||||
"recipe[openstack-network::ml2_openvswitch]",
|
||||
"recipe[openstack-network]",
|
||||
"recipe[openstack-network::openvswitch]",
|
||||
"recipe[openstack-network::_bridge_config_example]",
|
||||
"recipe[openstack-network::plugin_config]",
|
||||
"recipe[openstack-network::openvswitch_agent]"
|
||||
]
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
{
|
||||
"name": "multinode-controller",
|
||||
"description": "This will deploy a controller node for a scenarios with just compute and controller nodes",
|
||||
"run_list": [
|
||||
"recipe[build-essential]",
|
||||
"recipe[openstack-common]",
|
||||
"recipe[openstack-common::logging]",
|
||||
"recipe[openstack-common::sysctl]",
|
||||
"recipe[openstack-common::python]",
|
||||
"recipe[openstack-common::client]",
|
||||
"recipe[openstack-common::etcd]",
|
||||
"recipe[openstack-ops-database::server]",
|
||||
"recipe[openstack-ops-database::openstack-db]",
|
||||
"recipe[openstack-ops-messaging::rabbitmq-server]",
|
||||
"recipe[openstack-identity::server-apache]",
|
||||
"recipe[openstack-identity::registration]",
|
||||
"recipe[openstack-identity::openrc]",
|
||||
"recipe[openstack-image::api]",
|
||||
"recipe[openstack-image::registry]",
|
||||
"recipe[openstack-image::identity_registration]",
|
||||
"recipe[openstack-network]",
|
||||
"recipe[openstack-network::server]",
|
||||
"recipe[openstack-network::ml2_core_plugin]",
|
||||
"recipe[openstack-network::openvswitch]",
|
||||
"recipe[openstack-compute::nova-setup]",
|
||||
"recipe[openstack-compute::identity_registration]",
|
||||
"recipe[openstack-compute::conductor]",
|
||||
"recipe[openstack-compute::api-os-compute]",
|
||||
"recipe[openstack-compute::api-metadata]",
|
||||
"recipe[openstack-compute::placement_api]",
|
||||
"recipe[openstack-compute::scheduler]",
|
||||
"recipe[openstack-compute::vncproxy]",
|
||||
"recipe[openstack-compute::identity_registration]",
|
||||
"recipe[openstack-block-storage::api]",
|
||||
"recipe[openstack-block-storage::scheduler]",
|
||||
"recipe[openstack-block-storage::volume_driver_lvm]",
|
||||
"recipe[openstack-block-storage::volume]",
|
||||
"recipe[openstack-block-storage::backup]",
|
||||
"recipe[openstack-block-storage::identity_registration]",
|
||||
"recipe[openstack-orchestration::engine]",
|
||||
"recipe[openstack-orchestration::api]",
|
||||
"recipe[openstack-orchestration::api-cfn]",
|
||||
"recipe[openstack-orchestration::identity_registration]",
|
||||
"recipe[openstack-image::image_upload]",
|
||||
"recipe[openstack-dashboard::horizon]",
|
||||
"recipe[openstack-dashboard::neutron-lbaas-dashboard]"
|
||||
]
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"name": "multinode-network",
|
||||
"description": "This will deploy a controller node for a scenarios with just compute and controller nodes",
|
||||
"run_list": [
|
||||
"recipe[build-essential]",
|
||||
"recipe[openstack-common]",
|
||||
"recipe[openstack-common::logging]",
|
||||
"recipe[openstack-common::sysctl]",
|
||||
"recipe[openstack-network::ml2_openvswitch]",
|
||||
"recipe[openstack-network::l3_agent]",
|
||||
"recipe[openstack-network::dhcp_agent]",
|
||||
"recipe[openstack-network::metadata_agent]",
|
||||
"recipe[openstack-network::openvswitch_agent]"
|
||||
]
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# check data bags, roles, environment files sanity by loading them in
|
||||
# chef-zero
|
||||
for db in $(ls -d data_bags/* | cut -f2 -d'/');do knife data bag from file $db data_bags/$db/*.json -z --secret-file .chef/encrypted_data_bag_secret;done
|
||||
for role in $(ls roles | grep json);do knife role from file $role -z;done
|
||||
for env in $(ls environments | grep json);do knife environment from file $env -z ;done
|
24
setup.cfg
24
setup.cfg
@ -1,24 +0,0 @@
|
||||
[metadata]
|
||||
name = chef-openstack
|
||||
summary = Chef cookbooks for deploying OpenStack
|
||||
description-file =
|
||||
README.md
|
||||
author = OpenStack
|
||||
author-email = openstack-dev@lists.openstack.org
|
||||
home-page = https://docs.openstack.org/chef-openstack/latest/
|
||||
classifier =
|
||||
Intended Audience :: Developers
|
||||
Intended Audience :: System Administrators
|
||||
License :: OSI Approved :: Apache Software License
|
||||
Operating System :: POSIX :: Linux
|
||||
|
||||
[build_sphinx]
|
||||
all_files = 1
|
||||
build-dir = doc/build
|
||||
source-dir = doc/source
|
||||
|
||||
[pbr]
|
||||
warnerrors = True
|
||||
|
||||
[wheel]
|
||||
universal = 1
|
21
setup.py
21
setup.py
@ -1,21 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# 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'],
|
||||
pbr=True)
|
@ -1,15 +0,0 @@
|
||||
# # encoding: utf-8
|
||||
|
||||
# Inspec test for openstack-chef-repo
|
||||
|
||||
# The Inspec reference, with examples and extensive documentation, can be
|
||||
# found at http://inspec.io/docs/reference/resources/
|
||||
|
||||
# There is no console output during runtime, check log file instead.
|
||||
|
||||
describe command('sudo bash -c "cd /opt/tempest && ' \
|
||||
'sudo /opt/tempest-venv/tempest.sh | ' \
|
||||
'tee /root/inspec-tempest-$(date -Iminutes).log &&' \
|
||||
'exit \${PIPESTATUS[0]}"') do
|
||||
its('exit_status') { should eq 0 }
|
||||
end
|
@ -1,190 +0,0 @@
|
||||
# Test Patches
|
||||
#
|
||||
# Test patches against the testing repo
|
||||
#
|
||||
# Author: Mark Vanderwiel (<vanderwl@us.ibm.com>)
|
||||
# Copyright (c) 2015, IBM, Corp.
|
||||
|
||||
require 'fileutils'
|
||||
require 'English'
|
||||
require 'chef/mixin/shell_out'
|
||||
require 'open3'
|
||||
require 'thor'
|
||||
|
||||
def version
|
||||
'0.1.0'
|
||||
end
|
||||
|
||||
def run(command, verbose = true)
|
||||
puts "## Running command: [#{Dir.pwd}] $ #{command}"
|
||||
live_stream = STDOUT
|
||||
live_stream = nil unless verbose
|
||||
runner = Mixlib::ShellOut.new(command, live_stream: live_stream, timeout: 1800).run_command
|
||||
runner.error!
|
||||
runner.stdout
|
||||
end
|
||||
|
||||
def check_dependencies
|
||||
puts '## Checking dependencies'
|
||||
run('chef --version')
|
||||
run('vagrant --version')
|
||||
end
|
||||
|
||||
def get_gerrit_user(user)
|
||||
return user unless user.to_s.empty?
|
||||
puts '## Using git config to find gitreview.username'
|
||||
git_config = run('git config -l', false)
|
||||
/^gitreview.username=(?<user>.*)$/i =~ git_config
|
||||
abort 'Error! Gerrit user could not be found, please use --username' if user.to_s.empty?
|
||||
user
|
||||
end
|
||||
|
||||
def get_patch_info(user, patch)
|
||||
puts "## Gathering information for patch: #{patch} with user: #{user}"
|
||||
patch_info = if user == 'jenkins'
|
||||
run("ssh -p 29418 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no #{user}@review.openstack.org gerrit query --current-patch-set #{patch}", false)
|
||||
else
|
||||
run("ssh -p 29418 #{user}@review.openstack.org gerrit query --current-patch-set #{patch}", false)
|
||||
end
|
||||
%r{^\s*project: openstack\/(?<patch_project>.*)$}i =~ patch_info
|
||||
/^\s*ref: (?<patch_ref>.*)$/i =~ patch_info
|
||||
abort "Error! Patch: #{patch} not valid" if patch_project.nil?
|
||||
patch_cookbook = patch_project.gsub('cookbook-', '')
|
||||
puts "## Patch project: #{patch_project}"
|
||||
puts "## Patch cookbook: #{patch_cookbook}"
|
||||
puts "## Patch ref: #{patch_ref}"
|
||||
abort "Error! Only cookbook-openstack-* patches allowed, not from project: #{patch_project}" unless patch_project[/cookbook-openstack-.*/]
|
||||
{ patch: patch, project: patch_project, cookbook: patch_cookbook, ref: patch_ref }
|
||||
end
|
||||
|
||||
def add_patch(patch_info)
|
||||
puts "## Adding patch: #{patch_info[:patch]} to cookbook: #{patch_info[:cookbook]}"
|
||||
run("git clone --depth 1 git@github.com:openstack/#{patch_info[:project]}.git")
|
||||
Dir.chdir(patch_info[:project]) do
|
||||
run("git fetch https://review.openstack.org/openstack/#{patch_info[:project]} #{patch_info[:ref]}")
|
||||
run('git checkout FETCH_HEAD')
|
||||
end
|
||||
end
|
||||
|
||||
def run_tempest
|
||||
puts '## Starting tempest tests'
|
||||
Dir.chdir('vms') do
|
||||
run("vagrant ssh -c \"sudo bash -c 'cd /opt/tempest && ./run_tests.sh -V'\" controller")
|
||||
end
|
||||
end
|
||||
|
||||
def run_basic_queries
|
||||
puts '## Starting basic query tests'
|
||||
{
|
||||
'nova-manage' => ['version', 'db version'],
|
||||
'nova' => %w(--version service-list hypervisor-list net-list image-list),
|
||||
'glance-manage' => %w(db_version),
|
||||
'glance' => %w(--version image-list),
|
||||
'keystone-manage' => %w(db_version),
|
||||
'keystone' => %w(--version user-list endpoint-list role-list service-list tenant-list),
|
||||
'cinder-manage' => ['version list', 'db version'],
|
||||
'cinder' => %w(--version list),
|
||||
'rabbitmqctl' => %w(cluster_status),
|
||||
}.each do |cli, commands|
|
||||
commands.each do |command|
|
||||
Dir.chdir('vms') do
|
||||
run("vagrant ssh -c \"sudo bash -c 'source /root/openrc && #{cli} #{command}'\" controller")
|
||||
end
|
||||
end
|
||||
end
|
||||
puts '## Finished basic query tests'
|
||||
end
|
||||
|
||||
def get_test_dir(env, os, patches)
|
||||
patch = 'master'
|
||||
patch = patches.tr(' ', '-') unless patches.to_s.empty?
|
||||
dir_name = "test-#{env}-#{os}-#{patch}"
|
||||
puts "## Repo dir: #{dir_name}"
|
||||
dir_name
|
||||
end
|
||||
|
||||
# Class to run the CLI
|
||||
class MyCLI < Thor
|
||||
desc 'test', 'Spin up test repo with optional patches'
|
||||
long_desc <<-LONGDESC
|
||||
This will run the test suite. There are options to include one or more patches using the gerrit review number.
|
||||
The test will run in a new directory called test-<env>-<os>-<patch>, where allinone is the default environment,
|
||||
ubuntu14 is the default os platform and master (no patches) is the default for patch.
|
||||
|
||||
For patches, the tool will try to find your gerrit review name using the "git config -l". If the tool
|
||||
cannot automatically find your gerrit review name, use the -u option to specify it.\n
|
||||
|
||||
Examples:
|
||||
|
||||
"$ chef exec ruby test_patch test"\n
|
||||
This will run the allinone against the master branch.
|
||||
|
||||
"$ chef exec ruby test_patch test -t"\n
|
||||
This will run the allinone against the master branch and run the tempest suite.
|
||||
|
||||
"$ chef exec ruby test_patch test -p 161495 -u kramvan"\n
|
||||
This will run the allinone against the master branch including the 161495 patch set.
|
||||
|
||||
"$ chef exec ruby test_patch test -p 161495,123456 -u kramvan"\n
|
||||
This will run the allinone against the master branch including patches 161495 and 123456.
|
||||
|
||||
"$ chef exec ruby test_patch test -p 161495 -i"\n
|
||||
This will run the allinone against the master branch including the 161495 patch set and
|
||||
run the converge a second time to help check for idempotentcy. Also, in this case the
|
||||
gerrit username was automatically found.
|
||||
|
||||
"$ chef exec ruby test_patch test -k -s"\n
|
||||
This is a developer run. The -s will skip the setup steps and just run the converge and tests
|
||||
again. This allows a developer to tweak and debug a node and then try converge again.
|
||||
|
||||
LONGDESC
|
||||
option :patches, aliases: :p, default: nil, banner: ' Gerrit patch numbers: xxx,zzz, defaults to no patches just use master branch.'
|
||||
option :env, aliases: :e, default: 'allinone', banner: ' Test environment to run.'
|
||||
option :os, aliases: :o, default: 'ubuntu14', banner: ' OS to use, ubuntu14 or centos7.'
|
||||
option :idempotent, aliases: :i, default: false, type: :boolean, banner: ' Run converge a second time to help check for idempotentcy.'
|
||||
option :query, aliases: :q, default: true, type: :boolean, banner: ' Run basic test queries after converge completes.'
|
||||
option :tempest, aliases: :t, default: false, type: :boolean, banner: ' Run Tempest suite.'
|
||||
option :keep, aliases: :k, default: false, type: :boolean, banner: ' Keep the environment, do not run \"rake destroy_machines\".'
|
||||
option :username, aliases: :u, banner: ' Gerrit user name used to fetch a patch if tool cannot automatically find it in git config.'
|
||||
option :skip, aliases: :s, banner: ' Skip all source changes, just run converge and tests again. For development after manually tweaking a node.'
|
||||
def test
|
||||
puts "## Starting repo test version: #{version} environment: #{options[:env]} on os: #{options[:os]}"
|
||||
ENV['REPO_OS'] = options[:os]
|
||||
|
||||
# TODO: Allow more flexibility with dependencies
|
||||
check_dependencies
|
||||
|
||||
dir_name = get_test_dir(options[:env], options[:os], options[:patches])
|
||||
Dir.mkdir(dir_name) unless Dir.exist?(dir_name)
|
||||
Dir.chdir(dir_name) do
|
||||
if options[:patches] && !options[:skip]
|
||||
user = get_gerrit_user(options[:username])
|
||||
options[:patches].split(',').each do |patch|
|
||||
patch_info = get_patch_info(user, patch)
|
||||
add_patch(patch_info)
|
||||
end
|
||||
end
|
||||
|
||||
run('git clone --depth 1 git@github.com:openstack/openstack-chef-repo.git') unless options[:skip]
|
||||
Dir.chdir('openstack-chef-repo') do
|
||||
ENV['ZUUL_CHANGES'] = options[:patches]
|
||||
run('chef exec rake berks_vendor') unless options[:skip]
|
||||
|
||||
(1..(options[:idempotent] ? 2 : 1)).each do |pass|
|
||||
puts "## Starting Converge pass: #{pass}"
|
||||
run("chef exec rake #{options[:env]}")
|
||||
run_basic_queries if options[:query]
|
||||
run_tempest if options[:tempest]
|
||||
puts "## Finished Converge pass: #{pass}"
|
||||
end
|
||||
|
||||
run('chef exec rake destroy_machines') unless options[:keep]
|
||||
end
|
||||
end
|
||||
|
||||
FileUtils.rm_rf(dir_name) unless options[:keep]
|
||||
puts "## Finished repo test version: #{version} environment: #{options[:env]} on os: #{options[:os]}"
|
||||
end
|
||||
end
|
||||
|
||||
MyCLI.start(ARGV)
|
16
tox.ini
16
tox.ini
@ -1,16 +0,0 @@
|
||||
[tox]
|
||||
minversion = 1.6
|
||||
envlist = docs
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
||||
|
||||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[testenv:docs]
|
||||
deps = -r{toxinidir}/doc/requirements.txt
|
||||
commands = sphinx-build -b html doc/source doc/build/html
|
Loading…
Reference in New Issue
Block a user