openstack-ansible 21.0.0 (ussuri)
We are amped to announce the release of: openstack-ansible 21.0.0: Ansible playbooks for deploying OpenStack This release is part of the ussuri release series. The source is available from: https://opendev.org/openstack/openstack-ansible Download the package from: https://tarballs.openstack.org/openstack-ansible/ Please report issues through: https://bugs.launchpad.net/openstack-ansible/+bugs For more details, please see below. 21.0.0 ^^^^^^ New Features ************ * Support is added for deploying OpenStack on CentOS 8 with source and distro based installs. However, nspawn support can't be offered, as machinectl relies on btrfs which has been dropped by CentOS. * Support is added for deploying OpenStack on Ubuntu Focal (20.04) with source based installs. Ubuntu Cloud Archive is not available for Focal at this point so it is not possible to offer distro package based installs for Focal. * Multiple HAProxy nodes can now be deployed in an HA configuration with keepalived and LetsEncrypt certificates. Certbot can be treated as a backend service for haproxy and acme-challenge requests from LetsEncrypt can be directed to whichever HAProxy server is running a certificate renewal. New variables are defined for frontend ACLs and options to be passed to Certbot which enable this new feature, but the majority of the required configuration is done via the existing HAProxy service setup. An example is provided in the documentation. * Added variables *cinder_active_active_cluster* and *cinder_active_active_cluster_name* that allow to explicitly enable or disable active/active feature, and set cluster name. * The galera_server role now includes the functionality from the galera_client role, and can optionally install the client and server components. This is controlled using two booleans, galera_install_server and galera_install_client, both of which default to false. Upgrade Notes ************* * The galera_server role now includes the functionality from the galera_client role, and as a result a number of the variables from the galera_client defaults are now available to override in the galera_server role defaults. In addition, a number of default variables have been generalised, removing the specific *_client_* or *_server_* parts of the names. Users of this role should check that any overrides they are using have the correct variables names for the new combined role. Deprecation Notes ***************** * To provide compatibility with Centos-8 the LXC cache preparation has been greatly simplified to remove the requirement for machinectl and btrfs, which is a combination not available on Centos-8. This has the side effect of machinectl no longer being a supported backing store for LXC. * Fedora is no longer tested in CI for each commit. * *rabbitmq_install_method: file* is deprecated now and will be removed in the Wallaby release. As for now supported options are only *external_repo* and *distro*. Among with that the following variables are deprecated and prepared for the removal: * rabbitmq_package_url * rabbitmq_package_sha256 * rabbitmq_package_path Variable *rabbitmq_release_version* has been removed as not used anymore. Changes in openstack-ansible 20.0.0.0rc1..21.0.0 ------------------------------------------------ a21b05dd3 Bump SHAs for stable/ussuri 54d10eea9 Add ubuntu focal distro jobs b3bc33f52 Always use the utility host for service setup tasks 5e396a182 Fix ceph deployment for CentOS 7 b74d2bbd2 Rename mysql to mariadb for registered var 1d9f2631a Add documentation for deploying letsencrypt certificates c8332c5dd Fix management address lookup for metal hosts in some deployments 4a0325bfd Add rsync package for New CentOS-8 minimal installs d25d301c3 Fix gate job for aio_metal template e3a0384e2 Fix mysql binary name fb4c00c78 Remove package cache proxy cleanup 2fc0370f9 Add Centos-8 support 739f0d82c Bump role SHA for ussuri 621705d72 Ensure distro packages are present for utility wheel build 59deac41e Fix KeyError raised when max hostname length exceeded 7f58002b8 Fix tmpfiles-setup wait handler c353ccded Bump SHAs for stable/ussuri 35c84c4d5 Disable test_swift_acl_anonymous_download test f8225264f Fix the name of the renamed network for trove 41e33b2a3 Add Ubuntu Focal support 16a96ff21 Cleanup ansible_python_interpreter 5e61842b1 Wait for systemd-tmpfiles-setup service to complete after container restart 441b36f47 Add murano to required_projects 08a926c9f Correct a typo in the document c513e6881 Remove git repo haproxy backend 0830ba6c4 Update default requirements_git_url for utility e72cfbd94 Only use zuul cloned git repos for code hosted at opendev.org 67f6afa51 Fix default openstack_deploy dir evaluation 268c66c6b Resolve issue with undefined facts while running with tags 4c4c65c16 Fix inventory_manage when the component for a host is not defined 47aace556 Rewrite CI provided apt sources to be http instead of https on focal 863b0487d auto-detect interpreter. e6f963123 Use ansible openstack collection fd045e4aa Remove pre-gate cleanup tasks for the new plain CI images 2759fea0e Add ansible openstack collection b5de032b4 Update TOX_CONSTRAINTS_FILE for stable/ussuri e0579f07e Update .gitreview for stable/ussuri b6b6f6eb7 Create Ussuri d41350808 Remove retired congress 465a1fea4 Rewrite CI provided apt sources to be http instead of https on bionic 3fc02402f Return lxc jobs 2679b80f2 Update ceph release to octopus de67ccbac Use galera server role to install galera client 5d8000967 Update docstheme for style 5bb49c4e8 Include openstack_services.yml as vars file for Gnocchi role 8dc271b1e Update Magnum fedora image name db75cb936 Enable octavia tempest tests 6185adefa [ussuri][goal] Update contributor documentation 2e0dfc240 Bump ansible version to 2.9.9 7171aecdf Increase disk size for manila service VM during tests 77f728398 Imported Translations from Zanata 7bb347db8 Drop proprietary repo usage for libselinux-python3 70a00cc28 Fix variables gathering for add-compute script cf0f3a37f Local facts are strings so make this explicit 7c5a6d4d4 Imported Translations from Zanata 648effa56 Don't do cleanup for Suse images 25a303632 Move openSUSE to experimental status 51631a5e3 Suppress errors when ara is not installed 3cd981999 [doc] Adjust deploy-guide to install py3 cc7ff5fd4 Fix horizon_image_upload_mode naming 2860f1bda Update hacking for Python3 d719094a0 Update ansible to 2.9.7 473c5439c Use btrfs-progs instead of btrfs-tools 0546ab4bd Imported Translations from Zanata 8e28b8e85 Install python3 instead of python2 during host bootstrapping. fec7887e8 Rewording Limited Connectivity for clarity b7c6b42d5 Use defined keepalived track_scripts 47090c82c Bump SHAs for master f9fd3c3ad Disable test_list_user_groups temepst test 2deabaeb4 Fix latest_tag rendering for stable versions 5d94b5b6c Fix update of the deploy guide 656a8dcd0 [doc] Update maturity matrix 560fc2d44 Grammar Cleanup - Maintenance Tasks ef76ec297 Change glance haproxy balancing method ba8032c5c [doc] Add Debian buster to the list of supported OS 600b23b1a [doc] Add line to distribute nova keys 0b7d97bea Update global-requirement-pins 189704a0c Update ansible to 2.8.10 4d0510bcf Update used cirros images 6db97829c Bump SHAs for master 6265118a9 Imported Translations from Zanata 9c0266082 [doc] Add firewall configuration step of quickstart guide ed35aa04c Bump SHAs for master b4665609e Add support to deploy zun f05af2d77 Add default value for user_role_file when cloning git repos 934ea56e2 Imported Translations from Zanata 30dd0337e Imported Translations from Zanata 869f18580 Set bionic upgrade job to voting 2e277de55 Upate deployment verifiation endpoint example b3932f0e8 Use zuul cached repos for openstack services 8176d320d Bump SHAs for master e42b2898c ceph: run handlers after common 3505cab50 Update limited connectivity guide for easy_install configuration b04481c82 Re-order gate cleanup pip package removal 8275bd045 Add CONTRIBUTING.rst bb01eedcd Add compute node deployment script 2e80e5335 Add missing horizon dashboard variables 7589b6ec3 Imported Translations from Zanata 772059734 [ussuri][goal] Drop python 2.7 ce8439706 Add magnum tempest test 0ed271ddd Imported Translations from Zanata 932baa2cf Add magnum image upload CI 78adec035 manila: refactor playbooks fb1a66e03 python3: use backported libselinux-python3 853dec794 ci: disable upgrade jobs 6bf489753 Bump SHAs for master 9d2a3c07e [doc] Add placement definition to config samples 5eeec731c Ensure utility binaries link to the latest versions 23c3bca4e Set bionic upgrade job to voting 5a9750eb1 Imported Translations from Zanata 3800754c1 Drop virtualenv pip package for CI 4d9b568f6 Fix idempotency for os-lxc-container-setup.yml 893aa5102 Add manila_service_region 0b9a302a2 manila: stop including all hosts in haproxy 2a7edfb03 Do not append container_name for metal containers 8a2ea4d3e Add manila tempest testing 83dbd97f2 Bump SHAs for master 23bf332db Imported Translations from Zanata 75f2f0f86 Bump ansible version to 2.8.8 1f50c8b53 Add ceph-mds and ceph-nfs setup a1eb06048 Document user-role-requirements.yml 9ce120468 Install appropriate tempest releases on stable branches 18a35faea Allow ceph metal CI deployments 75879a02d Remove log compression before upload aa79d8186 Set fixed version for networking-calico 6c6f25f81 Bump SHAs for master be1bf3084 Update ansible to 2.8.7 8d8a8ecd9 Imported Translations from Zanata 13f5b3e95 [doc] Add placement definition to config sample 7313764be Imported Translations from Zanata 350c92ea9 Deploy heat with magnum 6eb90b8f1 Bump SHAs for master c30ac4b96 Imported Translations from Zanata 2c4738918 Document container_extra_networks usage d7a05389c Use py3 for venvs for all OS 2224cf162 Imported Translations from Zanata 2ac3c8afd Drop pip-conf-removal.yml from docs 9a05b6fd5 Update Train Release date 88bb4d33d Drop pip-conf-removal task be89da6a1 Make upgrade script respect OSA_CONFIG_DIR 2e8474efb Set neutron_service_region in group_vars 827b2e992 Add reno regarding buster support 00d71feb8 Remove murano from os-infra_containers 280ddcee9 Imported Translations from Zanata f66b4b277 Install chrony on AIO e4f3da81c Set CentOS upgrade jobs to non-voting e46d1ebe2 Don't install python2 for Debian 573420763 Revert "Add nova placement to placement migration" 7c837594c Bump SHAs for master 46358ae9d Move debian jobs to buster 6729ad423 Use unconfined apparmor profiles on Debian Buster. 94e477032 Don't require provider_networks with no_containers be4360588 Imported Translations from Zanata ed625067b Removes package cache references from yum config 41fa31325 Install galera client for placement migration 1bd21d80e Disable journald-remote playbook 384ae93a9 Roll back use of tempest smoke test for the integrated repo 096691d2e Adding missing tag for dynamic-address-fact task 69bee0fe6 Bump SHAs for master 28da36da7 Imported Translations from Zanata 97d448f22 Update inventory group/user_secrets for inspector change in Ironic 23c34a79a Change rabbitmq_package_state logic b3de0e3f9 Collect etcd logs ee679637f Fix core-reviewer source link. 1aa0aad4c Imported Translations from Zanata 717534356 Bump SHAs for master e5a6a1416 Fix requirements_git_url call 035136af6 Switch upgrade jobs to Ussuri cycle b8cd59c56 Add ceph-ansible filter plugins path to openstack-ansible.rc 9f9bfae7e Run setup module prior to bootstrapping aio 94eac3cb3 Fix spice-html5 git repo a61c5aa4d Add metal upgrade jobs 3fbc5b959 Start Ussuri cycle 8971ab3b2 Drop rabbitmq_apply_openstack_policies a1b567df1 Install python3 distro packages in the utility playbook 99439227c Imported Translations from Zanata 57d5a127b Add locale override for space identification bb863c176 Update docs regarding train release 4ce8c74c9 Update master for stable/train a224a2b65 Replace deprecated "lvm_share_export_ip" opt 0ff6e1fb3 Add support to deploy murano 655d265df tox: Keeping going with docs 9b1f331d9 Use bootstrap_host_scenarios_expanded for services b5c288277 Add cloudkitty and zun to a-r-r 88360784d Imported Translations from Zanata af588a44a Switch to opensuse-15 nodeset Diffstat (except docs and test files) ------------------------------------- .gitreview | 2 +- CONTRIBUTING.rst | 19 + ansible-collection-requirements.yml | 4 + ansible-role-requirements.yml | 240 ++--- deploy-guide/source/conf.py | 47 +- deploy-guide/source/overview-requirements.rst | 4 +- deploy-guide/source/targethosts-prepare.rst | 17 +- .../admin/maintenance-tasks/ansible-modules.rst | 50 +- .../admin/maintenance-tasks/inventory-backups.rst | 4 +- .../admin/maintenance-tasks/rabbitmq-maintain.rst | 26 +- .../admin/openstack-operations/verify-deploy.rst | 14 +- .../reference/configuration/advanced-config.rst | 1 + .../reference/configuration/extending-osa.rst | 22 + .../reference/configuration/extra-networks.rst | 62 ++ etc/openstack_deploy/conf.d/ceph.yml.aio | 8 + etc/openstack_deploy/conf.d/ironic.yml.aio | 4 + etc/openstack_deploy/conf.d/murano.yml.aio | 3 + etc/openstack_deploy/conf.d/murano.yml.example | 8 + etc/openstack_deploy/conf.d/zun.yml.aio | 7 + etc/openstack_deploy/conf.d/zun.yml.example | 9 + etc/openstack_deploy/env.d/aio_metal.yml.example | 9 + etc/openstack_deploy/openstack_user_config.yml.aio | 1 + .../openstack_user_config.yml.aio.j2 | 1 + .../openstack_user_config.yml.example | 2 +- .../openstack_user_config.yml.prod-ceph.example | 14 + .../openstack_user_config.yml.prod.example | 9 + ...openstack_user_config.yml.provnet-group.example | 9 + .../openstack_user_config.yml.test.example | 5 + etc/openstack_deploy/user_secrets.yml | 22 + .../user_variables.yml.prod-ceph.example | 1 - global-requirement-pins.txt | 9 +- inventory/env.d/ceph.yml | 28 + inventory/env.d/ironic.yml | 16 +- inventory/env.d/murano.yml | 38 + inventory/env.d/zun.yml | 36 + inventory/group_vars/all/all.yml | 10 +- inventory/group_vars/all/ceph.yml | 6 +- inventory/group_vars/all/glance.yml | 2 +- inventory/group_vars/all/horizon.yml | 2 +- inventory/group_vars/all_containers.yml | 2 +- inventory/group_vars/ceph_all.yml | 38 +- inventory/group_vars/haproxy/haproxy.yml | 35 +- inventory/group_vars/haproxy/keepalived.yml | 8 +- inventory/group_vars/horizon_all.yml | 3 + inventory/group_vars/manila_all.yml | 9 +- inventory/group_vars/murano_all.yml | 26 + inventory/group_vars/neutron_all.yml | 2 + inventory/group_vars/rabbitmq_all.yml | 3 +- inventory/group_vars/utility_all.yml | 62 +- inventory/inventory.ini | 13 +- osa_toolkit/filesystem.py | 26 +- osa_toolkit/generate.py | 35 +- osa_toolkit/manage.py | 3 + playbooks/ceph-install.yml | 97 +- playbooks/ceph-nfs-install.yml | 67 ++ playbooks/ceph-rgw-install.yml | 18 +- playbooks/ceph-rgw-keystone-setup.yml | 10 +- playbooks/common-playbooks/cinder.yml | 10 +- playbooks/common-playbooks/glance.yml | 8 +- playbooks/common-playbooks/neutron.yml | 10 +- playbooks/common-playbooks/nova.yml | 12 +- playbooks/common-tasks/ceph-server.yml | 61 +- playbooks/common-tasks/os-lxc-container-setup.yml | 16 +- playbooks/common-tasks/package-cache-proxy.yml | 67 -- playbooks/containers-lxc-create.yml | 11 +- playbooks/containers-lxc-host.yml | 10 +- playbooks/containers-nspawn-create.yml | 14 +- playbooks/containers-nspawn-host.yml | 8 +- playbooks/defaults/ceph_ansible.yml | 2 - playbooks/defaults/distro_install.yml | 1 + playbooks/defaults/healthchecks-vars.yml | 6 +- playbooks/defaults/repo_packages/gnocchi.yml | 3 +- playbooks/defaults/repo_packages/nova_consoles.yml | 12 +- .../defaults/repo_packages/openstack_services.yml | 203 ++-- playbooks/defaults/source_install.yml | 4 + playbooks/etcd-install.yml | 8 +- playbooks/galera-install.yml | 13 +- playbooks/haproxy-install.yml | 8 +- playbooks/healthcheck-infrastructure.yml | 2 +- playbooks/healthcheck-openstack.yml | 48 +- playbooks/infra-journal-remote.yml | 8 +- playbooks/memcached-install.yml | 8 +- playbooks/openstack-hosts-setup.yml | 20 +- playbooks/os-aodh-install.yml | 8 +- playbooks/os-barbican-install.yml | 8 +- playbooks/os-blazar-install.yml | 12 +- playbooks/os-ceilometer-install.yml | 8 +- playbooks/os-congress-install.yml | 12 +- playbooks/os-designate-install.yml | 8 +- playbooks/os-gnocchi-install.yml | 8 + playbooks/os-heat-install.yml | 8 +- playbooks/os-horizon-install.yml | 8 +- playbooks/os-ironic-install.yml | 8 +- playbooks/os-keystone-install.yml | 10 +- playbooks/os-magnum-install.yml | 7 + playbooks/os-manila-install.yml | 52 +- playbooks/os-masakari-install.yml | 8 +- playbooks/os-mistral-install.yml | 12 +- playbooks/os-murano-install.yml | 43 + playbooks/os-octavia-install.yml | 8 +- playbooks/os-panko-install.yml | 8 +- playbooks/os-placement-install.yml | 23 +- playbooks/os-rally-install.yml | 8 +- playbooks/os-sahara-install.yml | 6 + playbooks/os-swift-install.yml | 9 +- playbooks/os-tacker-install.yml | 8 +- playbooks/os-tempest-install.yml | 9 +- playbooks/os-trove-install.yml | 8 +- playbooks/os-zun-install.yml | 66 ++ playbooks/qdrouterd-install.yml | 9 +- playbooks/rabbitmq-install.yml | 11 +- playbooks/repo-install.yml | 8 +- playbooks/rsyslog-install.yml | 8 +- playbooks/security-hardening.yml | 8 +- playbooks/setup-infrastructure.yml | 6 + playbooks/setup-openstack.yml | 2 + playbooks/unbound-install.yml | 11 +- playbooks/utility-install.yml | 51 +- .../add-centos-8-support-af546bd6ca3b10cd.yaml | 7 + .../notes/add-focal-support-54ae4be4f524db7b.yaml | 7 + .../notes/add-iptables-5ff8c4317e2e8498.yaml | 2 +- .../notes/add-murano-to-repo-ffsdgsdhgb332 | 4 + .../notes/add-zun-to-repo-169a09b4ab52c1f7.yaml | 4 + releasenotes/notes/apt_repo-097cb34c12e60207.yaml | 7 + .../blockinfile_hosts_file-0959a64a030c8888.yaml | 7 + .../ceph-backend-host-change-968edfbc15b59b0a.yaml | 2 +- .../ceph_ceph_conf_overrides-7b3a09ac34f94a6b.yaml | 7 + .../ceph_keyrings_in_files-7d6a01e64861f8c6.yaml | 15 + .../notes/certbot_ha-83b56aed3f360dba.yaml | 11 + ...der-init-config-overrides-9e495aee023deed6.yaml | 2 +- ...der_active_active_cluster-62674205a3259902.yaml | 6 + ...tty-init-config-overrides-ffce7e419061c4da.yaml | 10 + ...dkitty-service-setup-host-9bd1d7372c501606.yaml | 17 + ...dkitty_init_time_settings-cba85875093eac61.yaml | 23 + .../notes/combine-client-d6b135b9957d55ee.yaml | 17 + .../notes/debian-buster-9c62d1182166545e.yaml | 9 + .../disable-journald-remote-33d3b43e538786ed.yaml | 13 + .../notes/drop-machinectl-5053dc9833535cd9.yaml | 8 + .../notes/drop-py-2-7-ff5e69d0456fbf4c.yaml | 5 + .../fedora-latest-support-bf58ecd96cc8fbd4.yaml | 4 + ...eat-init-config-overrides-004872081661a34c.yaml | 2 +- ...nic-init-config-overrides-e73d9fd46a69afcf.yaml | 2 +- .../notes/journal-log-cfbr504hd9b49612.yaml | 5 + .../keystone-openrc-v2-show-0bbfc8ab1dba8bd6.yaml | 5 + .../notes/libvirt_packages-e826dec75312c077.yaml | 5 + ...num-init-config-overrides-aec21cbbd9da8e4e.yaml | 2 +- .../notes/magnum_resources-84e50dbaebac7d1c.yaml | 8 + .../notes/mod-auth-openidc-102bd253b677f3fc.yaml | 16 + .../murano-horizon-panel-7875a53d695ba3f0.yaml | 9 + ...ng-generic-switch-support-6ae4be93aa50a7c3.yaml | 7 + ...udkitty-only-install-venv-449f52f2cf8a5e98.yaml | 5 + ...ssaging-separate-backends-601acca3643bd90c.yaml | 19 + .../notes/package-state-34d9aa6d4c7aeffe.yaml | 14 + .../rabbit_install_method-b1defcd376f3bf87.yaml | 13 + .../notes/remove-fax-fail-5038b4b6eb4951b3.yaml | 2 +- .../notes/remove-pki-support-d13581d93f245e92.yaml | 4 + .../remove-requirements-git-ecb194a280b34192.yaml | 7 + .../notes/remove_rpc_backend-1987334512353568.yaml | 4 + .../removed-trusty-support-e312476a237187f5.yaml | 4 + .../notes/session_engine-54753c41d355e34e.yaml | 11 + .../notes/suse_experimental-247d141fe0381f21.yaml | 7 + .../notes/tempestconf-extras-38a14ff705161872.yaml | 14 + releasenotes/source/conf.py | 16 +- releasenotes/source/index.rst | 1 + .../source/locale/id/LC_MESSAGES/releasenotes.po | 1067 ++++++++++++++++++-- releasenotes/source/train.rst | 6 + requirements.txt | 2 - scripts/add-compute.sh | 88 ++ scripts/ansible-role-requirements-editor.py | 5 +- scripts/bootstrap-ansible.sh | 30 +- scripts/gate-check-commit.sh | 37 +- scripts/get-ansible-role-requirements.yml | 24 +- scripts/log-collect.sh | 14 +- scripts/openstack-ansible.rc | 5 +- scripts/openstack-ansible.sh | 2 +- scripts/release-yaml-file-prep.py | 7 +- scripts/run-upgrade.sh | 13 +- scripts/scripts-library.sh | 20 +- .../upgrade-utilities/deploy-config-changes.yml | 42 +- .../galera-cluster-rolling-restart.yml | 10 +- test-requirements.txt | 2 +- .../bootstrap-host/tasks/check-requirements.yml | 5 + .../bootstrap-host/tasks/prepare_aio_config.yml | 42 +- .../templates/user_variables.aio.yml.j2 | 34 +- .../templates/user_variables_ceph.yml.j2 | 5 +- .../templates/user_variables_magnum.yml.j2 | 71 ++ .../templates/user_variables_manila.yml.j2 | 72 +- .../templates/user_variables_murano.yml.j2 | 30 + .../templates/user_variables_octavia.yml.j2 | 23 + .../templates/user_variables_translations.yml.j2 | 4 +- .../templates/user_variables_zun.yml.j2 | 18 +- tox.ini | 57 +- zuul.d/jobs.yaml | 180 +++- zuul.d/playbooks/pre-gate-cleanup.yml | 55 + zuul.d/playbooks/pre-gate-scenario.yml | 4 +- zuul.d/playbooks/pre-osa-aio.yml | 9 +- .../playbooks/templates/osa-gate-scenario.yml.j2 | 2 +- zuul.d/project-templates.yaml | 78 +- 234 files changed, 5608 insertions(+), 2026 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 3064f4781..6a94d1d4e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6 +5,0 @@ pyOpenSSL>=17.1.0 # Apache-2.0 -ndg-httpsclient>=0.4.2;python_version<'3.0' # BSD @@ -11 +9,0 @@ PyYAML>=3.12 # MIT -virtualenv>=14.0.6 # MIT diff --git a/test-requirements.txt b/test-requirements.txt index faa6d2423..f49cb49c4 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6 +6 @@ -hacking>=1.1.0,<1.2.0 # Apache-2.0 +hacking>=3.0,<3.1.0 # Apache-2.0
participants (1)
-
no-reply@openstack.org