0%

ansible

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