Ansible 部署服务 使用赛项提供的 OpenStack 私有云平台,创建 2 台系统为 centos7.5 的云主机,其中一台作为 ansible 的母机并命名为 ansible,另外一台云主机命名为 node1,通过 http 服务中的ansible.tar.gz 软件包在 ansible 节点安装 ansible 服务;并用这台母机,编写 ansible 脚本(在/root 目 录 下 创 建 ansible_ftp 目 录 作 为 ansible 工 作 目 录 , 部 署 的 入 口 文 件 命 名 为install_ftp.yaml)。install_ftp.yaml 文件中需要完成的内容为 (1)yaml 中被执行节点为 node1,执行者为 root; (2)使用 copy 模块将 ansible 节点的 local.repo 传到 node 节点;(local.repo 用于配置2021 年职业院校技能大赛“云计算”赛项 赛卷node 节点的 yum 源,可自行创建) (3)使用 yum 模块安装 ftp 服务; (4)使用 service 模块启动 ftp 服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@ansible openstack]# cat ftpd.yaml --- - name: install ftpd hosts: compute tasks: - name: copy local.repo to compute copy: src: /etc/yum.repos.d/http.repo dest: /etc/yum.repos.d/local.repo - name: install ftpd yum: name: - vsftpd state: latest - name: enable ftpd service service: name: vsftpd state: started enabled: true
ansible搭建openstack yum install -y ansible
mkdir openstack
cd openstack
cp /etc/ansible/ansible.cfg .
1 2 3 4 5 6 7 [root@ansible openstack]# cat /etc/ansible/hosts [controller] 192.168.20.113 [compute] 192.168.20.120
1 2 3 4 5 6 7 8 9 cat ansible.cfg [defaults] inventory = /etc/ansible/hosts remote_user = root [privilege_escalation] become=True become_method=sudo become_user=root become_ask_pass=False
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [root@ansible openstack]# cat openstack_start.yaml --- - name: init hosts: all roles: - init - name: openrc hosts: all roles: - jinjia2 - name: install controller hosts: controller roles: - mariadb - keystone - glance - nova-controller - neutron-controller - dashboard - cinder-controller - swift-controller - heat - name: install compute hosts: compute roles: - nova-compute - neutron-compute - cinder-compute - swift-compute
for i in {init,jinjia2,mariadb,keystone,glance,nova-controller,neutron-controller,dashboard,cinder-controller,swift-controller,heat,nova-compute,neutron-compute,cinder-compute,swift-compute};do ansible-galaxy init roles/$i ;done
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [root@ansible openstack]# cat roles/init/tasks/main.yml --- - name: init controller block: - name: hostname shell: hostnamectl set-hostname controller - name: bash shell: bash - name: delete yum shell: rm -rf /etc/yum.repos.d/* - name: copy yum copy: src: /etc/yum.repos.d/http.repo dest: /etc/yum.repos.d/local.repo when: ansible_hostname == 'controller' - name: init compute block: - name: hostname shell: hostnamectl set-hostname compute - name: bash shell: bash - name: delete yum shell: rm -rf /etc/yum.repos.d/* - name: copy yum copy: src: /etc/yum.repos.d/http.repo dest: /etc/yum.repos.d/local.repo - name: umount mount: path: /mnt state: unmounted - name: part1 parted: device: /dev/vdb number: 1 state: present part_end: 20GiB - name: part2 parted: device: /dev/vdb number: 2 state: present part_start: 20GiB part_end: 40GiB when: ansible_hostname == 'compute' - name: install yum: name: iaas-xiandian state: latest
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@ansible openstack]# cat roles/jinjia2/tasks/main.yml --- # tasks file for roles/jinjia2 - name: jinjia2 block: - name: template template: src: ../templates/openrc.sh.j2 dest: /etc/xiandian/openrc.sh - name: pre-host shell: iaas-pre-host.sh
1 2 3 4 5 6 7 [root@ansible openstack]# cat roles/mariadb/tasks/main.yml --- # tasks file for roles/mariadb - name: install mariadb shell: iaas-install-mysql.sh
1 2 3 4 5 6 7 [root@ansible openstack]# cat roles/keystone/tasks/main.yml --- # tasks file for roles/keystone - name: install keystone shell: iaas-install-keystone.sh