ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【云计算】ansible安装部署openstack平台(很全!亲测有效) [打印本页]

作者: 用户国营    时间: 2024-6-21 13:04
标题: 【云计算】ansible安装部署openstack平台(很全!亲测有效)
ansible安装部署openstack平台

1. 规划节点

Ansible服务的节点规划,见表2。
表2 规划节点
IP主机名节点172.128.11.33ansibleAnsible节点172.128.11.39controllerController控制节点172.128.11.21computeCompute计算节点172.128.11.22桌面化测试节点 2. 底子准备

现平台已提供三台云主机进行实行,云主机镜像使用提供的CentOS_7.9.qcow2镜像,云主机范例均为4vcpu、12G内存,40G磁盘+20G临时磁盘,另平台还提供了一台桌面化测试节点,用于访问OpenStack云平台。节点规划表中的IP地点为作者的IP地点,在进行实操案例的时候,按照本身的环境规划网络与IP地点(假造机需要使用两块网卡)。Ansible节点安装好Ansible服务。然后做好Ansible节点对Controller和Compute节点的无秘钥访问操作。
案例实施

1. 环境准备

该实战案例为使用Ansible工具部署一个单控制单计算的OpenStack平台。
(1)配置IP并连接
连接三台云主机,并修改主机名分别为ansible、controller、compute。修改完成后刷新页面或者执行bash下令,以生效新主机名。
  1. [root@localhost opt]# hostnamectl set-hostname ansible
  2. [root@localhost opt]# hostnamectl set-hostname controller
  3. [root@localhost opt]# hostnamectl set-hostname compute
复制代码
需要使用fdisk /dev/vdb下令在第compute节点进行分区,三个大小为6G的分区。
  1. [root@compute ~]# fdisk /dev/vdb
  2. Welcome to fdisk (util-linux 2.23.2).
  3. Changes will remain in memory only, until you decide to write them.
  4. Be careful before using the write command.
  5. Device does not contain a recognized partition table
  6. Building a new DOS disklabel with disk identifier 0x0ae2cbd1.
  7. Command (m for help): p
  8. Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
  9. Units = sectors of 1 * 512 = 512 bytes
  10. Sector size (logical/physical): 512 bytes / 512 bytes
  11. I/O size (minimum/optimal): 512 bytes / 512 bytes
  12. Disk label type: dos
  13. Disk identifier: 0x0ae2cbd1
  14.    Device Boot      Start         End      Blocks   Id  System
  15. Command (m for help): n
  16. Partition type:
  17.    p   primary (0 primary, 0 extended, 4 free)
  18.    e   extended
  19. Select (default p): p
  20. Partition number (1-4, default 1):
  21. First sector (2048-41943039, default 2048):
  22. Using default value 2048
  23. Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +6G
  24. Partition 1 of type Linux and of size 6 GiB is set
  25. Command (m for help): n
  26. Partition type:
  27.    p   primary (1 primary, 0 extended, 3 free)
  28.    e   extended
  29. Select (default p): p
  30. Partition number (2-4, default 2):
  31. First sector (12584960-41943039, default 12584960):
  32. Using default value 12584960
  33. Last sector, +sectors or +size{K,M,G} (12584960-41943039, default 41943039): +6G
  34. Partition 2 of type Linux and of size 6 GiB is set
  35. Command (m for help): n
  36. Partition type:
  37.    p   primary (2 primary, 0 extended, 2 free)
  38.    e   extended
  39. Select (default p): p
  40. Partition number (3,4, default 3):
  41. First sector (25167872-41943039, default 25167872):
  42. Using default value 25167872
  43. Last sector, +sectors or +size{K,M,G} (25167872-41943039, default 41943039): +6G
  44. Partition 3 of type Linux and of size 6 GiB is set
  45. Command (m for help): p
  46. Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
  47. Units = sectors of 1 * 512 = 512 bytes
  48. Sector size (logical/physical): 512 bytes / 512 bytes
  49. I/O size (minimum/optimal): 512 bytes / 512 bytes
  50. Disk label type: dos
  51. Disk identifier: 0x0ae2cbd1
  52.    Device Boot      Start         End      Blocks   Id  System
  53. /dev/vdb1            2048    12584959     6291456   83  Linux
  54. /dev/vdb2        12584960    25167871     6291456   83  Linux
  55. /dev/vdb3        25167872    37750783     6291456   83  Linux
  56. Command (m for help): w
  57. The partition table has been altered!
  58. Calling ioctl() to re-read partition table.
  59. Syncing disks.
  60. [root@compute ~]# lsblk
  61. NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  62. vda    253:0    0  40G  0 disk
  63. └─vda1 253:1    0  40G  0 part /
  64. vdb    253:16   0  20G  0 disk
  65. ├─vdb1 253:17   0   6G  0 part
  66. ├─vdb2 253:18   0   6G  0 part
  67. └─vdb3 253:19   0   6G  0 part
  68. vdc    253:32   0   1M  0 disk
复制代码
(2)Ansible安装FTP、Ansible服务
在Ansible节点下载CentOS-7-x86_64-DVD-2009.iso、chinaskills_cloud_iaas_v2.0.1.iso、openstack_ansible_train.tar.gz、ansible.tar.gz软件包,配置本地镜像源,安装Ansible服务。把Ansible节点的防火墙和SELinux关闭。
  1. [root@ansible ~]# curl -O #下载地址,可以本地上传
  2. [root@ansible ~]# curl -O #下载地址,可以本地上传
  3. [root@ansible ~]# curl -O #下载地址,可以本地上传
  4. [root@ansible ~]# curl -O #下载地址,可以本地上传
  5. [root@ansible ~]# mkdir /opt/{centos,iaas}
  6. [root@ansible ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /opt/centos/
  7. [root@ansible ~]# mount -o loop chinaskills_cloud_iaas_v2.0.1.iso /opt/iaas/
  8. [root@ansible ~]# tar -zxvf ansible.tar.gz -C /opt/
  9. [root@ansible ~]# mv /etc/yum.repos.d/* /home/
  10. [root@ansible ~]# vi /etc/yum.repos.d/ansible.repo
  11. [ansible]
  12. name=ansible
  13. baseurl=file:///opt/ansible
  14. gpgcheck=0
  15. enabled=1
  16. [centos]
  17. name=centos
  18. baseurl=file:///opt/centos
  19. gpgcheck=0
  20. enabled=1
  21. [root@ansible ~]# yum install vsftpd -y
  22. [root@ansible ~]# echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf
  23. [root@ansible ~]# systemctl  restart vsftpd
  24. [root@ansible ~]# setenforce 0
  25. [root@ansible ~]# yum install ansible -y
复制代码
(3)配置无秘钥登录
配置Ansible节点无秘钥登录Controller和Compute节点。配置完无秘钥登录后,使用Ansible节点SSH连接测试。(若云主机已是无秘钥访问的,则不消配置无秘钥)
  1. [root@ansible ~]# ssh-keygen
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/root/.ssh/id_rsa):
  4. Enter passphrase (empty for no passphrase):
  5. Enter same passphrase again:
  6. Your identification has been saved in /root/.ssh/id_rsa.
  7. Your public key has been saved in /root/.ssh/id_rsa.pub.
  8. The key fingerprint is:
  9. SHA256:zOl0NDjrN697yRTmHmLXYpj2n4ijS+yxHUS3OhRG3ew root@ansible
  10. The key's randomart image is:
  11. +---[RSA 2048]----+
  12. |          .. o   |
  13. |         o  . o  |
  14. |        o * ..   |
  15. |       o B +o.E  |
  16. |        S +=.o   |
  17. |       = +*.B .  |
  18. |        *o*O +   |
  19. |       o =.**. . |
  20. |        =o==o.o  |
  21. +----[SHA256]-----+
  22. [root@ansible ~]# scp -p .ssh/id_rsa.pub 172.128.11.21:/root/.ssh/authorized_keys     //输入密码Abc@1234
  23. [root@ansible ~]# scp -p .ssh/id_rsa.pub 172.128.11.20:/root/.ssh/authorized_keys     //输入密码Abc@1234
复制代码
2. 目录结构

(1)项目目录
起首在/opt目录下创建一个项目目录openstack_ansible,下令如下:
  1. [root@ansible ~]# mkdir /opt/openstack_ansible
复制代码
(2)创建角色
在创建roles角色目录之前,考虑将OpenStack云平台的安装步调拆分为多个roles执行,如许的话,Playbook易于编写和读懂。
安装私有云平台,使用init(底子环境)、mariadb(数据库)、keystone(认证服务)、glance(镜像服务)、placement、nova-controller(计算服务)、nova-compute(计算服务)、neutron-controller(网络服务)、neutron-compute(网络服务)、dashboard(界面服务)、cinder-controller(块存储服务)、cinder-compute(块存储服务)、swift-controller(对象存储服务)、swift-compute(对象存储服务)、heat(编排服务)这些roles来完成。下面创建这些roles和相应的项目目录,具体下令如下:
  1. [root@ansible ~]# mkdir -p /opt/openstack_ansible/roles/{init,mariadb,keystone,glance,nova-controller,nova-compute,neutron-controller,neutron-compute,dashboard,cinder-controller,cinder-compute,swift-controller,swift-compute,heat}/{tasks,files,templates,meta,handlers,vars}
复制代码
在每个角色目录下面都有一样的目录,这些目录中的task目录一样平常是肯定会用到的,其他的目录视情况而定来使用。
(3)创建group_vars目录
在项目目录/opt/openstack_ansible下创建group_vars目录,并在该目录下创建all文件,该目任命来存放变量声明文件all。下令如下:
  1. [root@ansible ~]# cd /opt/openstack_ansible/
  2. [root@ansible openstack_ansible]# mkdir group_vars
  3. [root@ansible openstack_ansible]# cd group_vars/
  4. [root@ansible group_vars]# touch all
复制代码
(4)创建安装入口文件
进入/opt/openstack_ansible目录,创建“install_openstack.yaml”文件,该文件是安装动作的入口文件。下令如下:
  1. [root@ansible openstack_ansible]#cd /opt/openstack_ansible
  2. [root@ansible openstack_ansible]# touch install_openstack.yaml
  3. [root@ansible openstack_ansible]# ll
  4. total 0
  5. drwxr-xr-x. 2 root root 17 Aug 26 21:31 group_vars
  6. -rw-r--r--. 1 root root  0 Aug 26 21:33 install_openstack.yaml
  7. drwxr-xr-x. 10 root root 114 Aug 26 21:18 roles
复制代码
到目前为止,ansible的目录结构与文件创建完毕。接下来对每一个role角色进行脚本的编写。
3. 编写Playbook脚本

配置完成后,如图9所示:

图9 配置完成结果
(1)init角色
该角色执行的任务是用来部署Controller节点和Compute的底子环境,包括配置Yum源,安装iaas-xiandian脚本,安装iaas-pre-host脚本。在roles/init/tasks目录下,创建main.yaml文件,按“i”建进入编辑模式进行配置,按ESC键输入:wq保存退出,文件的内容如下:
  1. [root@ansible ~]# vi /opt/openstack_ansible/roles/init/tasks/main.yaml
  2. - name: move repos
  3.   shell: mv /etc/yum.repos.d/* /media
  4. - name: create local.repo
  5.   copy: src=local.repo dest=/etc/yum.repos.d/
  6. - name: install openstack-iaas
  7.   yum: name=openstack-iaas state=present
  8. - name: openrc.sh
  9.   template: src=openrc.sh.j2 dest=/etc/openstack/openrc.sh
  10. - name: install pre-host
  11.   shell: iaas-pre-host.sh
复制代码
该脚本用到了copy和template模块,copy模块使用的文件及镜像包,放入tasks同级目录的files目录下;template模块使用的Jinja2文件,放入tasks同级目录的templates目录下。
在该init角色脚本中,创建local.repo文件到init/files目录下,创建openrc.sh.j2文件至init/templates目录下。下面贴出local.repo和host.j2的文件内容:
local.repo内容:
  1. [root@ansible opt]# vi /opt/openstack_ansible/roles/init/files/local.repo
  2. [centos]
  3. name=centos
  4. baseurl=ftp://172.128.11.33/centos
  5. gpgcheck=0
  6. enabled=1
  7. [iaas]
  8. name=iaas
  9. baseurl=ftp://172.128.11.33/iaas/iaas-repo
  10. gpgcheck=0
  11. enabled=1
复制代码
openrc.sh.j2内容如下:
  1. [root@ansible opt]# vi /opt/openstack_ansible/roles/init/templates/openrc.sh.j2
  2. #--------------------system Config--------------------##
  3. #Controller Server Manager IP. example:x.x.x.x
  4. HOST_IP={{controller_ip}}
  5. #Controller HOST Password. example:000000
  6. HOST_PASS={{PASSWD}}
  7. #Controller Server hostname. example:controller
  8. HOST_NAME={{controller_name}}
  9. #Compute Node Manager IP. example:x.x.x.x
  10. HOST_IP_NODE={{compute_ip}}
  11. #Compute HOST Password. example:000000
  12. HOST_PASS_NODE={{PASSWD}}
  13. #Compute Node hostname. example:compute
  14. HOST_NAME_NODE={{compute_name}}
  15. #--------------------Chrony Config-------------------##
  16. #Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
  17. network_segment_IP={{network_segment_IP}}/24
  18. #--------------------Rabbit Config ------------------##
  19. #user for rabbit. example:openstack
  20. RABBIT_USER=openstack
  21. #Password for rabbit user .example:000000
  22. RABBIT_PASS={{PASSWD}}
  23. #--------------------MySQL Config---------------------##
  24. #Password for MySQL root user . exmaple:000000
  25. DB_PASS={{PASSWD}}
  26. #--------------------Keystone Config------------------##
  27. #Password for Keystore admin user. exmaple:000000
  28. DOMAIN_NAME=demo
  29. ADMIN_PASS={{PASSWD}}
  30. DEMO_PASS={{PASSWD}}
  31. #Password for Mysql keystore user. exmaple:000000
  32. KEYSTONE_DBPASS={{PASSWD}}
  33. #--------------------Glance Config--------------------##
  34. #Password for Mysql glance user. exmaple:000000
  35. GLANCE_DBPASS={{PASSWD}}
  36. #Password for Keystore glance user. exmaple:000000
  37. GLANCE_PASS={{PASSWD}}
  38. #--------------------Placement Config----------------------##
  39. #Password for Mysql placement user. exmaple:000000
  40. PLACEMENT_DBPASS={{PASSWD}}
  41. #Password for Keystore placement user. exmaple:000000
  42. PLACEMENT_PASS={{PASSWD}}
  43. #--------------------Nova Config----------------------##
  44. #Password for Mysql nova user. exmaple:000000
  45. NOVA_DBPASS={{PASSWD}}
  46. #Password for Keystore nova user. exmaple:000000
  47. NOVA_PASS={{PASSWD}}
  48. #--------------------Neutron Config-------------------##
  49. #Password for Mysql neutron user. exmaple:000000
  50. NEUTRON_DBPASS={{PASSWD}}
  51. #Password for Keystore neutron user. exmaple:000000
  52. NEUTRON_PASS={{PASSWD}}
  53. #metadata secret for neutron. exmaple:000000
  54. METADATA_SECRET={{PASSWD}}
  55. #External Network Interface. example:eth1
  56. INTERFACE_NAME={{External_Network}}
  57. #External Network The Physical Adapter. example:provider
  58. Physical_NAME={{Physical_NAME}}
  59. #First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
  60. minvlan=1
  61. #Last Vlan ID in VLAN RANGE for VLAN Network. example:200
  62. maxvlan=1000
  63. #--------------------Cinder Config--------------------##
  64. #Password for Mysql cinder user. exmaple:000000
  65. CINDER_DBPASS={{PASSWD}}
  66. #Password for Keystore cinder user. exmaple:000000
  67. CINDER_PASS={{PASSWD}}
  68. #Cinder Block Disk. example:md126p3
  69. BLOCK_DISK={{cinder_disk}}
  70. #--------------------Swift Config---------------------##
  71. #Password for Keystore swift user. exmaple:000000
  72. SWIFT_PASS={{PASSWD}}
  73. #The NODE Object Disk for Swift. example:md126p4.
  74. OBJECT_DISK={{swift_disk}}
  75. #The NODE IP for Swift Storage Network. example:x.x.x.x.
  76. STORAGE_LOCAL_NET_IP={{STORAGE_LOCAL_NET_IP}}
  77. #--------------------Trove Config----------------------##
  78. #Password for Mysql trove user. exmaple:000000
  79. TROVE_DBPASS={{PASSWD}}
  80. #Password for Keystore trove user. exmaple:000000
  81. TROVE_PASS={{PASSWD}}
  82. #--------------------Heat Config----------------------##
  83. #Password for Mysql heat user. exmaple:000000
  84. HEAT_DBPASS={{PASSWD}}
  85. #Password for Keystore heat user. exmaple:000000
  86. HEAT_PASS={{PASSWD}}
  87. #--------------------Ceilometer Config----------------##
  88. #Password for Gnocchi ceilometer user. exmaple:000000
  89. CEILOMETER_DBPASS={{PASSWD}}
  90. #Password for Keystore ceilometer user. exmaple:000000
  91. CEILOMETER_PASS={{PASSWD}}
  92. #--------------------AODH Config----------------##
  93. #Password for Mysql AODH user. exmaple:000000
  94. AODH_DBPASS={{PASSWD}}
  95. #Password for Keystore AODH user. exmaple:000000
  96. AODH_PASS={{PASSWD}}
  97. #--------------------ZUN Config----------------##
  98. #Password for Mysql ZUN user. exmaple:000000
  99. ZUN_DBPASS={{PASSWD}}
  100. #Password for Keystore ZUN user. exmaple:000000
  101. ZUN_PASS={{PASSWD}}
  102. #Password for Keystore KURYR user. exmaple:000000
  103. KURYR_PASS={{PASSWD}}
  104. #--------------------OCTAVIA Config----------------##
  105. #Password for Mysql OCTAVIA user. exmaple:000000
  106. OCTAVIA_DBPASS={{PASSWD}}
  107. #Password for Keystore OCTAVIA user. exmaple:000000
  108. OCTAVIA_PASS={{PASSWD}}
  109. #--------------------Manila Config----------------##
  110. #Password for Mysql Manila user. exmaple:000000
  111. MANILA_DBPASS={{PASSWD}}
  112. #Password for Keystore Manila user. exmaple:000000
  113. MANILA_PASS={{PASSWD}}
  114. #The NODE Object Disk for Manila. example:md126p5.
  115. SHARE_DISK={{manila_disk}}
  116. #--------------------Cloudkitty Config----------------##
  117. #Password for Mysql Cloudkitty user. exmaple:000000
  118. CLOUDKITTY_DBPASS={{PASSWD}}
  119. #Password for Keystore Cloudkitty user. exmaple:000000
  120. CLOUDKITTY_PASS={{PASSWD}}
  121. #--------------------Barbican Config----------------##
  122. #Password for Mysql Barbican user. exmaple:000000
  123. BARBICAN_DBPASS={{PASSWD}}
  124. #Password for Keystore Barbican user. exmaple:000000
  125. BARBICAN_PASS={{PASSWD}}
复制代码
因为设置的变量,以是需要在/opt/openstack_ansible/group_vars/all中声明变量,all文件内容如下:
  1. [root@ansible opt]# vi /opt/openstack_ansible/group_vars/all
  2. controller_ip: 172.128.11.21
  3. controller_name: controller
  4. compute_ip: 172.128.11.20
  5. compute_name: compute
  6. PASSWD: 'Abc@1234'
  7. cinder_disk: vdb1
  8. swift_disk: vdb2
  9. manila_disk: vdb3
  10. network_segment_IP: 172.128.11.0
  11. External_Network: eth1
  12. Physical_NAME: provider
  13. STORAGE_LOCAL_NET_IP: 172.128.11.20
复制代码
至此,init角色脚本编写完成。
(2)其他角色
其他角色的作用是执行安装OpenStack的脚本,可以自行参考提供的案例文档,其他main.yaml文件可使用提供的软件包openstack_ansible_train.tar.gz,更换之后需要更改以下文件:
  1. [root@ansible openstack_ansible]# tar -zxvf /root/openstack_ansible_train.tar.gz -C /root/
  2. [root@ansible openstack_ansible]# cp -rvf /root/openstack_ansible_train/* /opt/openstack_ansible/
  3. cp: overwrite ‘/opt/openstack_ansible/group_vars/all’? n
  4. cp: overwrite ‘/opt/openstack_ansible/install_openstack.yaml’? n
  5. ‘/root/openstack_ansible_train/roles/cinder-compute/tasks/main.yaml’ ->
  6. ‘/opt/openstack_ansible/roles/cinder-compute/tasks/main.yaml’
  7. ‘/root/openstack_ansible_train/roles/cinder-controller/tasks/main.yaml’
  8. -> ‘/opt/openstack_ansible/roles/cinder-controller/tasks/main.yaml’
  9. ‘/root/openstack_ansible_train/roles/dashboard/tasks/main.yaml’ -> ‘/opt
  10. /openstack_ansible/roles/dashboard/tasks/main.yaml’
  11. ‘/root/openstack_ansible_train/roles/glance/tasks/main.yaml’ -> ‘/opt/op
  12. enstack_ansible/roles/glance/tasks/main.yaml’
  13. ‘/root/openstack_ansible_train/roles/heat/tasks/main.yaml’ -> ‘/opt/open
  14. stack_ansible/roles/heat/tasks/main.yaml’
  15. cp: overwrite ‘/opt/openstack_ansible/roles/init/files/local.repo’? n
  16. cp: overwrite ‘/opt/openstack_ansible/roles/init/tasks/main.yaml’? n
  17. cp: overwrite ‘/opt/openstack_ansible/roles/init/templates/openrc.sh.j2’
  18. ? n
  19. ‘/root/openstack_ansible_train/roles/keystone/tasks/main.yaml’ -> ‘/opt/
  20. openstack_ansible/roles/keystone/tasks/main.yaml’
  21. ‘/root/openstack_ansible_train/roles/mariadb/tasks/main.yaml’ -> ‘/opt/o
  22. penstack_ansible/roles/mariadb/tasks/main.yaml’
  23. ‘/root/openstack_ansible_train/roles/neutron-compute/tasks/main.yaml’ ->
  24. ‘/opt/openstack_ansible/roles/neutron-compute/tasks/main.yaml’
  25. ‘/root/openstack_ansible_train/roles/neutron-controller/tasks/main.yaml’
  26. -> ‘/opt/openstack_ansible/roles/neutron-controller/tasks/main.yaml’
  27. ‘/root/openstack_ansible_train/roles/nova-compute/tasks/main.yaml’ -> ‘/
  28. opt/openstack_ansible/roles/nova-compute/tasks/main.yaml’
  29. ‘/root/openstack_ansible_train/roles/nova-controller/tasks/main.yaml’ ->
  30. ‘/opt/openstack_ansible/roles/nova-controller/tasks/main.yaml’
  31. ‘/root/openstack_ansible_train/roles/swift-compute/tasks/main.yaml’ -> ‘
  32. /opt/openstack_ansible/roles/swift-compute/tasks/main.yaml’
  33. ‘/root/openstack_ansible_train/roles/swift-controller/tasks/main.yaml’ -
  34. > ‘/opt/openstack_ansible/roles/swift-controller/tasks/main.yaml’
  35. [root@ansible opt]# cat /opt/openstack_ansible/roles/init/files/local.repo
  36. [centos]
  37. name=centos
  38. baseurl=ftp://172.128.11.33/centos
  39. gpgcheck=0
  40. enabled=1
  41. [iaas]
  42. name=iaas
  43. baseurl=ftp://172.128.11.33/iaas/iaas-repo
  44. gpgcheck=0
  45. enabled=1
  46. [root@ansible opt]# cat /opt/openstack_ansible/group_vars/all
  47. controller_ip: 172.128.11.21
  48. controller_name: controller
  49. compute_ip: 172.128.11.20
  50. compute_name: compute
  51. PASSWD: 'Abc@1234'
  52. cinder_disk: vdb1
  53. swift_disk: vdb2
  54. manila_disk: vdb3
  55. network_segment_IP: 172.128.11.0
  56. External_Network: eth1
  57. Physical_NAME: provider
  58. STORAGE_LOCAL_NET_IP: 172.128.11.20
复制代码
4. 执行Playbook

在执行脚本之前,还有一些工作需要完成,具体任务如下:
(1)修改hosts文件
此处需要修改的hosts文件并不但是/etc/hosts,还有一个/etc/ansible/hosts文件,编辑/etc/ansible/hosts,在文件的末了添加需要执行脚本的目标主机组,添加的内容如下:
  1. [root@ansible ~]# vi /etc/ansible/hosts
  2. ## db-[99:101]-node.example.com
  3. [controller]
  4. 172.128.11.21
  5. [compute]
  6. 172.128.11.20
复制代码
编辑/etc/hosts文件,添加IP与主机名的映射,如下所示:
  1. [root@ansible ~]# vi /etc/hosts
  2. 172.128.11.21 controller
  3. 172.128.11.20 compute
复制代码
(2)编辑脚本入口文件
install_openstack.yaml文件为执行脚本的入口文件,需要将调用roles的次序及哪些主机调用哪些roles在这个文件中表现出来,install_openstack.yaml文件的具体内容如下(如果以选择更换软件包里的内容无需修改一下内容):
  1. [root@ansible ~]# vi /opt/openstack_ansible/install_openstack.yaml
  2. ┅  \\三短横请手打
  3. - hosts: controller
  4.   remote_user: root
  5.   roles:
  6.     - init
  7.     - mariadb
  8.     - keystone
  9.     - glance
  10.     - nova-controller
  11.     - neutron-controller
  12.     - dashboard
  13.     - cinder-controller
  14.     - swift-controller
  15.     - heat
  16. - hosts: compute
  17.   remote_user: root
  18.   
  19.   roles:
  20.     - init
  21.     - nova-compute
  22.     - neutron-compute
  23.     - cinder-compute
  24.     - swift-compute
复制代码
(3)执行脚本
当所有准备工作都完成之后,使用ansible-playbook下令执行脚本,起首使用–syntax-check参数检测脚本的语法,下令如下:
  1. [root@ansible opestack_ansible]# ansible-playbook install_openstack.yaml --syntax-check
  2. playbook: install_openstack.yaml
复制代码
直接返回文件名,表示脚本没有语法错误。执行脚本,下令如下(留意需要写完所有main.yaml文件才会完备安装):
  1. [root@ansible openstack_ansible]# ansible-playbook install_openstack.yaml
  2. PLAY RECAP ****************************************************************************************************************************************
  3. 172.128.11.21              : ok=10   changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
  4. 172.128.11.39              : ok=16   changed=14   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
  5. ...
  6. ...
复制代码
在等待一段时间之后,脚本执行完毕,若没有报错,访问Controller节点的IP地点/dashboard,可以访问OpenStack界面。访问OpenStack界面如图所示:

图OpenStack登录界面
至此,使用Ansible一键部署OpenStack完成。关于更多组件的安装,用户可以自行编写role执行安装。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4