美文网首页
Kolla-Ansible源码分析

Kolla-Ansible源码分析

作者: 孙广宁 | 来源:发表于2018-06-03 20:24 被阅读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
    

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


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


    部署multi region环境(未深入)


    各个项目在kolla中开发相关


    相关文章

      网友评论

          本文标题:Kolla-Ansible源码分析

          本文链接:https://www.haomeiwen.com/subject/sefdsftx.html