Kolla-Ansible源码分析

2018-06-03  本文已影响0人  孙广宁
.
├── 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_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
kolla_enable_tls_external: "yes"
kolla_external_fqdn_cert: "{{ node_config_directory }}/certificates/mycert.pem"
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
/etc/kolla/config/nova/nova-scheduler.conf
kolla-ansible reconfigure

使用kolla-ansible快速部署

2 块网卡
8GB 内存
40GB 硬盘
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
[defaults]
host_key_checking=False
pipelining=True
forks=100
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/* .
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
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
pip install python-openstackclient python-glanceclient python-neutronclient
. /usr/share/kolla-ansible/init-runonce

python 虚拟环境的安装(未深入研究其作用)


从本地docker仓库来部署多节点结构openstack


部署multi region环境(未深入)


各个项目在kolla中开发相关


上一篇下一篇

猜你喜欢

热点阅读