Kolla-Ansible源码分析
2018-06-03 本文已影响0人
孙广宁
- Kolla-Ansible 是从 kolla项目中分离出来,专注部署openstack基础服务
.
├── LICENSE 项目证书
├── README.rst 项目简介
├── ansible 项目ansible代码部分
│ ├── action_plugins
│ │ ├── merge_configs.py 合并新老配置文件,所有role均会调用
│ │ └── merge_yaml.py 合并新老参数
│ ├── bifrost.yml 运行该模块,在指定节点安装该项目,用于安装ironic来部署其它模块
│ ├── certificates.yml 运行该模块,安装ca认证
│ ├── destroy.yml 运行该模块,在所有节点运行指定的tools下的脚本
│ ├── group_vars 项目ansible所有参数文件
│ │ └── all.yml
│ ├── inventory 项目ansible中主机配置文件
│ │ ├── all-in-one
│ │ └── multinode
│ ├── kolla-host.yml
│ ├── library
│ │ ├── bslurp.py 用于获取二进制blob并推送到其它主机,主要是ceph的keyring处理
│ │ ├── kolla_ceph_keyring.py 更新ceph keyring文件
│ │ ├── kolla_container_facts.py 收集容器的信息,所有role都会执行
│ │ ├── kolla_docker.py 控制容器的一系列工作,创建删除等各个role均会调用
│ │ ├── kolla_toolbox.py
│ │ ├── merge_configs.py
│ │ └── merge_yaml.py
│ ├── mariadb_recovery.yml
│ ├── post-deploy.yml 将admin_openrc文件拷贝到指定位置
│ ├── roles 包含所有要部署的组件和检查代码
│ │ ├── aodh
│ │ ├── prechecks
│ ├── site.yml 在指定节点运行指定roles,如收集参数,安装ntp服务等
│ └── stop.yml 调用stop模块,运行stop脚本,停掉所有container
├── bindep.txt
├── contrib
│ ├── bash-completion
│ │ └── kolla-ansible
│ ├── demos
│ │ ├── heat
│ │ ├── magnum
│ │ └── tacker
│ └── dev
│ └── vagrant
├── deploy-guide
│ └── source
│ ├── conf.py
│ ├── index.rst
│ ├── multinode.rst
│ └── quickstart.rst
├── doc kolla-ansible的文档描述
│ └── source
│ ├── admin
│ ├── conf.py
│ ├── contributor
│ ├── index.rst
│ ├── reference
│ └── user
├── etc 会将以下内容拷贝到安装节点的/etc/kolla目录下
│ └── kolla
│ ├── globals.yml
│ └── passwords.yml
├── kolla_ansible
│ ├── __init__.py
│ ├── cmd 生成密码和合并新老密码功能
│ │ ├── __init__.py
│ │ ├── genpwd.py
│ │ └── mergepwd.py
│ └── version.py
├── lower-constraints.txt
├── releasenotes 所有组件的版本号
│ ├── notes
│ │ ├── add-aodh-a5de8a339f25c1a2.yaml
│ └── source 各个版本的内容定义
│ ├── _static
│ ├── _templates
│ ├── conf.py
│ ├── index.rst
│ ├── ocata.rst
│ ├── pike.rst
│ ├── queens.rst
│ └── unreleased.rst
├── requirements.txt
├── setup.cfg 入口文件
├── setup.py
├── specs
│ ├── ansible-multi.rst
│ ├── containerize-openstack.rst
│ ├── ha.svg
│ ├── high-availability.rst
│ ├── kubernetes-deployment.rst
│ ├── logging-with-heka.rst
│ ├── logging-with-heka.svg
│ ├── prometheus.rst
│ └── template.rst
├── test-requirements.txt
├── tests 如container重名等功能测试
│ ├── __init__.py
│ ├── ansible_setup_ceph_disks.yml
│ ├── get_logs.sh
│ ├── post.yml
│ ├── pre.yml
│ ├── run.yml
│ ├── setup_ceph_disks.sh
│ ├── setup_gate.sh -> ../tools/setup_gate.sh
│ ├── templates
│ │ ├── ceph-overrides.j2
│ │ ├── docker_daemon.json.j2
│ │ ├── globals-default.j2
│ │ ├── inventory.j2
│ │ └── nova-compute-overrides.j2
│ ├── test_kolla_docker.py
│ └── test_merge_config.py
├── tools
│ ├── cleanup-containers 清空container,包括volume
│ ├── cleanup-host 清理neutron在主机上的残留,和ceph有关的fstab文件
│ ├── cleanup-images 清理docker image
│ ├── diag 查看docker ansible版本,image列表 container列表
│ ├── dump_info.sh 查看节点操作系统版本,内存大小
│ ├── generate_passwords.py -> ../kolla_ansible/cmd/genpwd.py
│ ├── init-runonce 会跑一次下载cirros镜像,并创建flavor
│ ├── init-vpn
│ ├── kolla-ansible
│ ├── loc
│ ├── merge_passwords.py -> ../kolla_ansible/cmd/mergepwd.py
│ ├── openrc-example
│ ├── ovs-dpdkctl.sh
│ ├── playbook-setup-nodes.yml
│ ├── pre-commit-hook
│ ├── run-bashate.sh
│ ├── setup_Debian.sh
│ ├── setup_RedHat.sh
│ ├── setup_gate.sh
│ ├── stop-containers 停止容器
│ ├── validate-all-file.py
│ ├── validate-all-yaml.sh 调用validate-yaml批量检查所有yaml文件
│ ├── validate-docker-execute.sh 检查用户是否能够执行docker命令
│ ├── validate-install-command.sh 检查是否能够执行yum或apt命令
│ └── validate-yaml.py 检查yaml格式正确性
└── tox.ini
kolla-ansible配置文件配置
- Kolla提供了两种用于将endpoint分配给网络地址的选项:
- 组合 - admin、external、internal三个端点共享相同IP地址
- 单独 - internal和admin用相同的url,external用不同的ip地址
- 组合配置如下:
kolla_internal_vip_address: "10.10.10.254"
network_interface: "eth0"
- 单独配置如下
kolla_internal_vip_address: "10.10.10.254"
network_interface: "eth0"
kolla_external_vip_address: "10.10.20.254"
kolla_external_vip_interface: "eth1"
- 如果使用互联网服务器地址需要修改以下配置
kolla_internal_fqdn: inside.mykolla.example.net
kolla_external_fqdn: mykolla.example.net
- 是否开启TLS功能修改以下配置
kolla_enable_tls_external: "yes"
kolla_external_fqdn_cert: "{{ node_config_directory }}/certificates/mycert.pem"
- 如果开启了TLS认证功能则环境变量需要类似以下配置
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo-password
export OS_AUTH_URL=https://mykolla.example.net:5000
# os_cacert is optional for trusted certificates
export OS_CACERT=/etc/pki/mykolla-cacert.crt
export OS_IDENTITY_API_VERSION=3
- openstack服务配置文件在kolla中的配置,如修改以下文件
/etc/kolla/config/nova/nova-scheduler.conf
- 如果openstack已经部署完毕,则修改配置的方法如下
kolla-ansible reconfigure
使用kolla-ansible快速部署
- 物理机最低配置
2 块网卡
8GB 内存
40GB 硬盘
- 安装物理机依赖,ansible软件、python客户端
yum install epel-release
yum install python-pip
pip install -U pip
yum install python-devel libffi-devel gcc openssl-devel libselinux-python
yum install ansible
- 修改ansible配置
[defaults]
host_key_checking=False
pipelining=True
forks=100
- 安装kolla-ansbie并配置其配置文件来部署openstack
pip install kolla-ansible
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
cp /usr/share/kolla-ansible/ansible/inventory/* .
- 下载开发源码
git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible
pip install -r kolla/requirements.txt
pip install -r kolla-ansible/requirements.txt
cp -r kolla-ansible/etc/kolla /etc/kolla
cp kolla-ansible/ansible/inventory/* .
- 根据实际情况修改all-in-one或multinode,global.yml(安装什么组件、版本等配置)配置文件,参考一下实例
https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html
- 进行环境的检查及部署
ansible -i multinode all -m ping
kolla-genpwd
cd kolla-ansible/tools
./generate_passwords.py
kolla-ansible -i ./multinode bootstrap-servers
kolla-ansible -i ./multinode prechecks
kolla-ansible -i ./multinode deploy
- openstack的使用
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
pip install python-openstackclient python-glanceclient python-neutronclient
. /usr/share/kolla-ansible/init-runonce