项目9-Ansible 自动化运维_第1页
项目9-Ansible 自动化运维_第2页
项目9-Ansible 自动化运维_第3页
项目9-Ansible 自动化运维_第4页
项目9-Ansible 自动化运维_第5页
已阅读5页,还剩42页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ansible自动化运维

科技是国之利器,国家赖之以强,企业赖之以赢,人民生活赖之以好。中国要强,中国人民生活要好,必须有强大科技。如果我们的自主创新能力不上去,一味靠技术引进,就永远难以摆脱技术落后的局面;只有提高自主创新能力才能提高我国生产力水平,增强综合国力和国际竞争力,才能在国际中立于不败之地。创新是引领发展的第一动力,抓创新就是抓发展,谋创新就是谋未来。科学技术是第一生产力,科技创新能力已成为综合国力的决定性因素;思政课堂阿福任职于一个成立不久的小公司,阿福每次配置机器都需要一台一台的去配置,本来机器少的时候阿福还可以接受,但是最近公司的业务突然直线上升,原本的机器已经承受不住了,老板采购了一批新机器,阿福为此非常头痛,如果还像以前一样部署的话,每天都要多一倍的工作量,甚至还得加班,偶然间阿福得知了自动化运维这个名词,但是并没有实战经验,于是决定学习,以来缩减自己的工作量本任务主要是部署Ansible。Ansible是新出现的自动化运维工具,基于Python研发。糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。仅需在控制端上安装Ansible程序配置被管控主机的IP信息,被管控的主机无客户端。项目描述Ansible的概念与架构Ansible的安装Ansible如何控制需要被控制的机器什么是Ad-Hoc和Playbook?问题引导基础环境配置本任务主要学习如何使用KVM创建虚拟机,以及对CentOS网络配置,Yum源的修改,服务的启动与停止,Ansible的安装、Ansible的架构、Ansible设计理念、以及Ansible由哪些组件组成Ansible入门本任务主要学习对Ansible的基本配置,Ansible各个配置文件的作用,配置Ansible控制端无需密码连接被控端,以及对Ansible资源清单的添加Ansible执行模式此任务主要了解Ansible的执行原理,熟悉Ansible基本模块、Ansible命令行结构、Ansible两种执行模式的区别(Ad-hoc和Playbook)Ansible-playbook此任务主要了解Ansible的执行原理,熟悉Ansible基本模块、Ansible命令行结构、Ansible两种执行模式的区别(Ad-hoc和Playbook)Ansible-Role部署OpenStack简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的引入它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。主要使用场景代码复用度较高的情况下知识学习项目实施1.Ansible母机这里给出虚拟机的基本要求,创建虚拟机的具体过程不再详述。•建议采用1GB内存以上。

CPU单核。硬盘不低于20GB。网卡(网络适配器)以桥接模式接入主机(物理机)网络。笔者所举实例中虚拟机硬件配置如图9-1所示(仅供参考)。任务一:基础环境配置2.虚拟机中安装CentOS7操作系统在安装过程中语言选择默认的英语,如果对Linux命令行操作很熟悉,建议选择CentOS7最小化操作系统以降低系统资源消耗,否则选择安装带GUI的服务器(Server

With

GUI)版本,如图9-2所示。这将有助于初学者查看和编辑配置文件,运行命令行(可打开多个终端界面)。为简化操作,可以考虑直接以Root身份登录。如果以普通用户身份登录,执行系统配置和管理操作时需要使用Sudo命令。例如关闭防火墙:项目实施[root@ansible~]#sudosystemctlstopfirewalld3.禁用防火墙与SELinux为方便测试,应关闭防墙。项目实施[root@ansible~]#systemctl

disable

firewalld

[root@ansible~]#systemctl

stop

firewalld编辑/etc/selinux/config文件,将“SELINUX”的值设置为“disabled”,重启系统使禁用SELinux生效。4.设置网络虚拟机的IP地址应选择静态地址,建议通过桥接模式直接访问外网,以便于测试内外网之间的双向通信。此实例中虚拟机的网络连接如图9-3所示,采用的是桥接模式。项目实施项目实施例如,虚拟机的主机运行Windows操作系统,IP地址为01,连接的网络是,默认网关为54,DNS为14;虚拟机运行CentOS7,IP地址配置为1,默认网关为54,DNS为14。该虚拟机的网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0的内容如下:设置完毕,执行以下命令重启network服务使网络接口设置更改生效。HWADDR=52:54:00:0C:80:CETYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneIPADDR=1PREFIX=24GATEWAY=54DNS1=14DEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=eth0UUID=cbc6d156-d9bc-3fc3-b3ec-9bc3ff89afebONBOOT=yesAUTOCONNECT_PRIORITY=-999[root@ansible~]#systemctl

restart

network提示CentOS7的网卡设备命名方式有所变化,它采用一致性网络设备命名,可以基于固件、拓扑、位置信息来设置固定名称,由此带来的好处是命名自动化,名称完全可预测,硬件因故障更换也不会影响设备的命名,可以让硬件更换无缝过渡。但不足之处是比传统的命名格式更难读。这种命名格式为:网络类型+设备类型编码+编号。例如,eno16777736表示一个以太网卡(en),使用的编号是板载设备索引号,类型编码是o,索引号是16777736。前两个字符为网络类型,如en表示以太网(Ethernet),wl表示无线局域网(WLAN),ww表示无线广域网(WWAN)。第3个字符代表设备类型,如o表示板载设备索引号,s表示热插拔插槽索引号,x表示MAC地址,p表示PCI地理位置/USB端口号;后面的编号来自设备。如果要恢复使用传统的网络接口命令方式,则可以编辑/etc/sysconfig/grub文件,找到GRUB_CMDLINE_LINUX,为它增加以下两个变量:net.ifnames=0biosdevname=0再使用grub2-mkconfig重新生成GRUB配置并更新内核参数。grub2-mkconfig-o/boot/grub2/grub.cfg项目实施5.设置主机名安装好CentOS7系统后,通常要更改主机名,例如,这里更改为

Ansible:例如,修改为Ansible[root@ansible~]#hostnamectl

set-hostname

ansible项目实施6.准备所需的软件包我们本次实验使用本地源来安装Ansible。先上传ansible.tar.gz到Ansible服务器上/root/目录配置本地源:[root@ansible~]#tar-zxvf/root/ansible.tar.gz[root@ansible~]#mv/etc/yum.repos.d/*/media/[root@ansible~]#vi/etc/yum.repos.d/ansible.repo[ansible]name=ansiblebaseurl=file:///root/ansiblegpgcheck=0项目实施[root@ansible~]#yum

makecache

该命令将读取baseurl的路径下的repodata目录,生成缓存,使用以下命令安装Ansible:继续执行以下命令,以确保Ansible本地源配置成功:[root@ansible~]#yum

install-y

ansible这将安装Ansible以及它所依赖的软件包,下面检测是否安装成功。

[root@ansible~]#ansible--version有返回Ansible的版本说明安装成功。至此Ansible安装成功Ansible简介图1-2新建虚拟机向导7.Ansible简介1)Ansible是一款开源自动化平台。它是一种易于编写的自动化语言2)简洁易读Ansible

Playbook提供运维人员易读的自动化。这代表,Playbook不仅是自动化工具,而且易于阅读、

理解和更改,就算不会其他语言也可以轻松的编写它。3)无需客户端安装其他插件Ansible特点就是无需客户端/被控端安装任何插件,只需通过OpenSSH或WinRM连接它管理的主机

组,将称为Ansible模块的小程序推送至这些主机,并且运行特定任务。8.

Ansible重要优点跨平台支持:Ansible支持非常多的架构,如Linux、Windows、UNIX,甚至网络设备,不用任何代理,适用于很多环境,如:物理机、虚拟机、云平台、容器环境简洁易读的自动化流程:Playbook采用YAML文本文件编写,易于阅读,不会因为上一个运维离职后,很难被重新利用起来支持动态清单:可以随时更改需要控制的主机,增加或减少,随时获取当前主机可以管理的正确机器Ansible简介9.Ansible架构Ansible架构中有两种计算机类型,即控制端和被控端所有受管主机都必须在资源清单中,便于集中管理使用任务模式定义任务Ansible的任务、Playbook均具有幂等性,运行一次或多次,返回的结果都是一样的Ansible可以使用插件,也可以自己添加代码到Ansible中Ansible有提供Ansible

Tower图形化操作界面,初学者学习使用命令行10.Ansible架构图Ansible简介11.Ansible组成Ansible本身核心模块(CoreModules):Ansible自带模块扩展模块(Custom

Modules):默认模块不够用,可以添加扩展模块插件(Plugins):对模块功能的补充剧本(Playbook):任务的集合连接插件(Connectior

Plugins):

Ansible默认是使用SSH连接被控端,也可以基于插件来连接被控端主机群(Host

Inventory):Ansible主机管理清单提示:测试过程可能会花费较长时间。安装过程中出现的问题一般也集中在这个阶段。笔者遇到的典型问题有以下两个。网络启动失败,这种情况一般都是网卡配置文件写错了,注意各个单词的大小写,虚拟机的网络模式下载Ansible失败,这时候要分情况,如果是源配置错误,请检查Ansible.repo源文件;如果是缺少依赖,请自行添加CentOS光盘的源Ansible入门学习任务二:Ansible入门学习1.使用KVM创建机器并配置网络创建虚拟机和配置网络的步骤上一个任务已经演示,这里不在赘述。2.修改被控端的主机名[root@ansible~]#hostnamectl

set-hostname

node1这样被控端就已经配置好了,默认sshd服务是自启的。我们现在回到Ansible主机3.配置Ansible主机无密码连接被控端因为Ansible还是依赖sshd服务,我们每次操作被控端的时候都需要输入密码,如果这样机器一多,每个密码还不一样,难免记错[root@ansible~]#ssh-keygen一直按回车,这条命令,会在当前用户的家目录的.ssh目录下生成私钥和公钥,将公钥发送到被控端以实现免密码登陆[root@ansible~]#ssh-copy-id

root@11是笔者的被控端,一定要替换成自己被控端的IP,跟着提示输入Yes,并输入被控端的密码,测试是否配置成功[root@ansible~]#ssh

root@1正常的话,这时候不需要输入密码就已经远程过去了,我们一直输入IP不太方便,修改一下Hosts[root@ansible~]#vi/etc/hosts1node1这时候每次就不用输入IP了,用Node1替换Ansible入门学习[root@ansible~]#vi/etc/ansible/hostsnode1[root@ansible~]#ansible

all--list-hosts

hosts(1):node1[root@ansible~]#ansible

node1-m

ping4.将node1加入资源清单Ansible的所有被控端的集合被称为资源清单,必须将主机写入清单中,才能控制它,修改/etc/ansible/hosts文件,在最后一行加入Node1因为我们上面已经将IP映射为Node1了,此处不需要写IP,如果你没有做上面那步,此处就需要填写IP,我们查看一下可以管理的主机列表上面命令查询了我们可以控制的所有主机,测试一下能不能通第一次可能要输入Yes,下次就不用了,至此我们已经配置好Ansible和被控端的连接Ansible入门学习[defaults]

#some

basic

default

values...

#inventory=/etc/ansible/hosts#清单文件#library=/usr/share/my_modules/#库文件存放目录#module_utils=/usr/share/my_module_utils/#模块工具存放目录#remote_tmp=~/.ansible/tmp#临时远程主机文件存放目录#local_tmp=~/.ansible/tmp#临时本地文件存放目录#forks=5#默认并发数#poll_interval=15#默认轮训时间(秒)#sudo_user=root#默认sudo用户#ask_sudo_pass=True#是否需要sudo密码#ask_pass=True#是否需要密码#transport=smart#传输方式#remote_port=22#默认远程主机端口号......5.ansible配置文件详解Ansible配置文件为/etc/ansible/ansible.cfgAnsible执行模式任务三:

Ansible执行模式1.Ansible命令执行原理在执行命令前,我们先了解一下Ansible是如何工作的,当我们执行了一个对目标主机的操作时:①加载Ansible的配置文件(ansible.cfg)②查找和读取主机清单文件中的主机③

加载你所使用的模块文件④通过Ansible将模块转换为*.py文件,将文件远程传输到被控主机⑤被控端给文件添加执行权限⑥

执行并返回结果⑦

被控端删除临时py文件可以看到,Ansible还是依赖Python环境的,CentOS

默认有Python环境2.Ansible自带模块查看Ansible自带所有模块:ansible-doc-l查看指定模块,如:ansible-doc-s

yumAnsible执行模式[root@ansible~]#ansible[受管主机]-m

模块名-a[参数][root@ansible~]#ansible

node1-m

command-a‘date’-a‘date’:‘date’就是command模块的参数command模块:ansible

node1-m

command-a“hostname”#获取对象node1的主机名user

模块:ansible

node1-m

user-a"name=haha"#在node1创建用户hahayum

模块:ansible

node1-m

yum-a"name=vim

state=present"#为node1安装vim3.Ansible命令行结构例如:简单演示一下自带模块的简单使用

Ansible常用模块4.Ansible常用模块COPY:拷贝本地文件到目标主机FilE:创建文件或设置文件属性Firewalld:

设置防火墙规则Service:服务管理Script:将本地.sh脚本在目标主机运行Shell:类似Command模块,比Command更强大Setup:用于收集远程主机信息,如主机名,IP5.Ad-hoc和Playbookad-hoc:ad-hoc模式每次使用单个模块,支持批量运行单条命令,ad-hoc命令是一种可以快速输入的命令,相当于Bash中的一句Shell,上面我们其实已经演示过,坏处是不能重复利用。Playbook:翻译成中文为剧本,意为Ansible通过写好的剧本,来确定自己需要对谁做什么。Playbook模式是Ansible主要管理方式,这也是Ansible强大的关键,Playbook通过多个小任务集合完成一个复杂任务,如对OpenStack的搭建,数据库的备份,可以将Playbook理解为组合多条ad-hoc操作的集合Ansib-Playbook[root@ansible~]#ansible

node1group-a"name=a

state=present"#创建a组[root@ansible~]#ansible

node1-m

user-a"user=zhangsan

group=a"#创建zhangsan用户,输入a组-hosts:node1

remote_user:roottasks:-name:create

group"a"group:name=a

state=present-name:create

user

zhangsan

user:name=zhangsan

group=a-hosts:node1remote_user:roottasks:-name:create

group"a"group:name:astate:present-name:create

user

zhangsanuser:name:zhangsangroup:a2.一个简单的Playbook将以下两个一次性ad-hoc命令,写成一个Playbook在/root/目录下编辑并创建文件p1.yaml,内容如下:或:两种方式都可以,看自己喜欢那种,结果都是一样的。Ansib-Playbookautocmd

FileType

yaml

setlocal

ai

ts=2sw=2et3.设置vi编辑器对yaml文件的支持在Playbook中只有空格能够用于缩进,但是我们可以对vi编辑器做一些设置,以便能够轻松的编辑Playbook,当然这不是必须的。编辑$home/.vimrc文件中添加以下设置,当我们编辑YAML类型文件的时候,它将会把你的tab转换成两个空格,并自动缩进后续行4.执行PlaybookPlaybook直接执行:ansible-playbook

p1.yaml,执行结果如图9-5所示。Playbook调试运行:ansible-playbook-C/root/p1.yaml(不改变被控端,只检查语法)。Ansible简单案例5.Ansible简单案例需求描述:为Node1主机安装Httpd,启动服务Httpd,并加入开机自启为Node1主机创建管理员用户Admin(即加入root组)新建并编辑一个Playbook,名为test.yaml,内容如图9-6所示:执行Playbook,并检查受控主机执行结果如图9-7和图9-8所示。图9-7

playbook运行结果图9-8httpd安装结果AnsibleRole部署OpenStack1.Ansible

Role简介Role意为角色,通过组织文件结构的方式将Ansible任务与Ansible入口文件分离,以达到复用任务的目的,Role只是Ansible一种组织文件的方式,本质还是编写Playbook,所以不用担心Ansible安装完会在/etc/ansible下生成一个roles的目录,进去运行一个命令,初始化一个test角色出来,如图9-9所示。图9-9初始化工作目录进去test目录可以看到很多其他目录,如图9-10所示。图9-10查看工作目录分别解释一下比较常用的目录files:存放普通文件,脚本文件tasks:存放一个个的任务,里面存在一个main.yml文件,一般在这个文件里调用其他文件templates:模版文件,存放Jinja2模版,一般跟变量文件配合使用vars:存放变量文件,有时候我们会总是用到一个路径,或者名称,可以把它存为变量,以供重复调用AnsibleRole部署OpenStackIP主机名节点0ansibleAnsible节点1controller制节点控2compute计算节点2.Ansible

Role部署OpenStack节点规划:表9-1地址规划表基础准备:使用虚拟化平台创建三台云主机进行实验,云主机镜像使用CentOS7.5,Ansible节点flavor(规格)使用2核/4G内存/40G硬盘;controller节点flavor(规格)使用4核/8G内存/100G硬盘;Compute节点flavor(规格)使用4核/8G内存/100G硬盘+50G临时磁盘。节点规划表中的IP地址为笔者的IP地址,在进行实操案例的时候,按照自己的环境规划网络与IP地址。Ansible节点安装好Ansible服务。然后做好Ansible节点对Controller和Compute节点的无秘钥访问操作。环境准备该实战案例为使用Ansible工具部署一个单控制单计算的OpenStack平台。(1)配置IP并连接连接三台云主机,并修改主机名分别为ansible、controller、compute。(2)Ansible节点安装Ansible服务在Ansible节点使用提供的ansible.tar.gz软件包,配置本地镜像源,安装Ansible服务。(3)配置无秘钥登录配置Ansible节点无秘钥登录controller和compute节点。配置完无秘钥登录后,使用Ansible节点ssh连接测试。(若云主机已是无秘钥访问的,则不用配置无秘钥)项目目录首先在/opt目录下创建一个项目目录openstack_ansible,命令如下:[root@ansible~]#mkdir/opt/openstack_ansible(1)创建角色在创建Roles角色目录之前,考虑将OpenStack云平台的安装步骤拆分为多个Roles执行,这样的话,Playbook易于编写和读懂。安装私有云平台,使用init(基础环境)、mariadb(数据库)、keystone(认证服务)、glance(镜像服务)、nova-controller(计算服务)、nova-compute(计算服务)、neutron-controller(网络服务)、neutron-compute(网络服务)、Dashboard(界面服务)、cinder-controller(块存储服务)、cinder-compute(块存储服务)、swift-controller(对象存储服务)、swift-compute(对象存储服务)、heat(编排服务)这些roles来完成。下面创建这些roles和相应的项目目录,具体命令如下[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目录一般是一定会用到的,其他的目录看需求来使用创建group_vars目录在项目目录/opt/openstack_ansible下创建group_vars目录,并在该目录下创建all文件,该目录用来存放变量生命文件all,命令如下:[root@ansible~]#mkdir/opt/openstack_ansible/group_vars[root@ansible~]#touch/opt/openstack_ansible/group_vars/all[root@ansible~]#cd/opt/openstack_ansible/创建安装入口文件进入/opt/openstack_ansible目录,创建“install_openstack.yaml”文件,该文件是安装动作的入口文件。命令如下:[root@ansible

openstack_ansible]#touch

install_openstack.yaml[root@ansible

openstack_ansible]#lltotal0drwxr-xr-x.2root

root17Aug2621:31group_vars-rw-r--r--.1root

root0Aug2621:33install_openstack.yamldrwxr-xr-x.10root

root114Aug2621:18roles到目前为止,Ansible的目录结构与文件创建完成。接下来对每一个角色进行剧本的编写。编写Playbook剧本Init角色该角色是执行的任务使用来部署Controller节点和Compute节点的基础环境,配置Yum源,安装iaas-openstack脚本,安装iaas-pre-host脚本。在roles/init/tasks目录下创建main.yaml文件,文件内容如下:-name:remove

defaule

repos

shell:rm-rf/etc/yum.repos.d/*/media-name:create

local.repo

copy:src=local.repo

dest=/etc/yum.repos.d/-name:install

iaas-openstack

yum:name=iaas-openstack

state=present-name:openrc.sh

template:src=openrc.sh.j2dest=/etc/xiandian/openrc.sh-name:install

pre-host

shell:iaas-pre-host.sh该Playbook用到了Copy和Template模块,Copy模块使用的文件,放到Tasks同级目录下的Files目录下;Template模块使用的Jinja2文件,放入Tasks同级目录的Templates目录下。在该Init角色剧本中,把local.repo文件拷贝至init/files目录下,把openrc.sh.j2文件拷贝至init/templates目录下。下面贴出local.repo和openrc.sh.j2的文件内容local.repo内容[centos]name=centosbaseurl=ftp://1/centosgpgcheck=0enabled=1[iaas]name=iaasbaseurl=ftp://1/iaas/iaas-repogpgcheck=0enabled=1Openrc.j2内容##--------------------system

Config--------------------####Controller

Server

Manager

IP.example:x.x.x.xHOST_IP={{controller_ip}}

##Controller

HOST

Password.example:000000HOST_PASS={{PASSWD}}##Controller

Server

hostname.example:controllerHOST_NAME={{controller_name}}

##Compute

Node

Manager

IP.example:x.x.x.xHOST_IP_NODE={{compute_ip}}

##Compute

HOST

Password.example:000000HOST_PASS_NODE={{PASSWD}}

##Compute

Node

hostname.example:computeHOST_NAME_NODE={{compute_name}}

##--------------------Chrony

Config-------------------####Controller

network

segment

IP.example:x.x.0.0/16(x.x.x.0/24)network_segment_IP={{network_segment_IP}}/24

##--------------------Rabbit

Config------------------####user

for

rabbit.example:openstackRABBIT_USER=openstack

##Password

for

rabbit

user.example:000000RABBIT_PASS={{PASSWD}}

##--------------------MySQL

Config---------------------####Password

for

MySQL

root

user.exmaple:000000DB_PASS={{PASSWD}}

##--------------------Keystone

Config------------------####Password

for

Keystore

admin

user.exmaple:000000DOMAIN_NAME=demoADMIN_PASS={{PASSWD}}DEMO_PASS={{PASSWD}}

##Password

for

Mysql

keystore

user.exmaple:000000KEYSTONE_DBPASS={{PASSWD}}

##--------------------Glance

Config--------------------####Password

for

Mysql

glance

user.exmaple:000000GLANCE_DBPASS={{PASSWD}}

##Password

for

Keystore

glance

user.exmaple:000000GLANCE_PASS={{PASSWD}}

##--------------------Nova

Config----------------------####Password

for

Mysql

nova

user.exmaple:000000NOVA_DBPASS={{PASSWD}}

##Password

for

Keystore

nova

user.exmaple:000000NOVA_PASS={{PASSWD}}##--------------------Neturon

Config-------------------####Password

for

Mysql

neutron

user.exmaple:000000NEUTRON_DBPASS={{PASSWD}}

##Password

for

Keystore

neutron

user.exmaple:000000NEUTRON_PASS={{PASSWD}}

##metadata

secret

for

neutron.exmaple:000000METADATA_SECRET={{PASSWD}}

##Tunnel

Network

Interface.example:x.x.x.x{%if

ansible_fqdn=="controller"%}INTERFACE_IP={{controller_ip}}{%elif

ansible_fqdn=="compute"%}INTERFACE_IP={{compute_ip}}{%endif%}

##External

Network

Interface.example:eth1INTERFACE_NAME={{External_Network}}

##External

Network

The

Physical

Adapter.example:providerPhysical_NAME={{Physical_NAME}}

##First

Vlan

ID

in

VLAN

RANGE

for

VLAN

Network.exmaple:101minvlan=1

##Last

Vlan

ID

in

VLAN

RANGE

for

VLAN

Network.example:200maxvlan=4000Openrc.j2内容##--------------------Cinder

Config--------------------####Password

for

Mysql

cinder

user.exmaple:000000CINDER_DBPASS={{PASSWD}}

##Password

for

Keystore

cinder

user.exmaple:000000CINDER_PASS={{PASSWD}}

##Cinder

Block

Disk.example:md126p3BLOCK_DISK={{cinder_disk}}

##--------------------Swift

Config---------------------####Password

for

Keystore

swift

user.exmaple:000000SWIFT_PASS={{PASSWD}}

##The

NODE

Object

Disk

for

Swift.example:md126p4.OBJECT_DISK={{swift_disk}}

##The

NODE

IP

for

Swift

Storage

Network.example:x.x.x.x.STORAGE_LOCAL_NET_IP={{STORAGE_LOCAL_NET_IP}}

##--------------------Heat

Config----------------------####Password

for

Mysql

heat

user.exmaple:000000HEAT_DBPASS={{PASSWD}}

##Password

for

Keystore

heat

user.exmaple:000000HEAT_PASS={{PASSWD}}

##--------------------Zun

Config-----------------------####Password

for

Mysql

Zun

user.exmaple:000000ZUN_DBPASS={{PASSWD}}##Password

for

Keystore

Zun

user.exmaple:000000ZUN_PASS={{PASSWD}}

##Password

for

Mysql

Kuryr

user.exmaple:000000KURYR_DBPASS={{PASSWD}}

##Password

for

Keystore

Kuryr

user.exmaple:000000KURYR_PASS={{PASSWD}}

##--------------------Ceilometer

Config----------------####Password

for

Gnocchi

ceilometer

user.exmaple:000000CEILOMETER_DBPASS={{PASSWD}}

##Password

for

Keystore

ceilometer

user.exmaple:000000CEILOMETER_PASS={{PASSWD}}

##--------------------AODH

Config----------------####Password

for

Mysql

AODH

user.exmaple:000000AODH_DBPASS={{PASSWD}}

##Password

for

Keystore

AODH

user.exmaple:000000AODH_PASS={{PASSWD}}

##--------------------Barbican

Config----------------####Password

for

Mysql

Barbican

user.exmaple:000000BARBICAN_DBPASS={{PASSWD}}

##Password

for

Keystore

Barbican

user.exmaple:000000BARBICAN_PASS={{PASSWD}}项目实施因为设置了变量,所以需要在/opt/openstack_ansible/group_vars/all中设置这些变量的值,以传递给Jinja2文件,all文件内容如下:controller_ip:1controller_name:controllercompute_ip:2compute_name:computePASSWD:'000000'cinder_disk:vdb1swift_disk:vdb2network_segment_IP:External_Network:eth1Physical_NAME:providerSTORAGE_LOCAL_NET_IP:2至此,init角色剧本编写完成。其他角色其他角色的作用是执行安装OpenStack的脚本,参考roles/init/task/main.yaml下面我列出来每个Role需要运行的脚本:mariadb:使用shell模块运行iaas-install-mysql.sh脚本keystone:使用shell模块运行iaas-install-keystone.sh脚本glance:使用shell模块运行iaas-install-glance.sh脚本nova-controller:使用shell模块运行iaas-install-nova-controller.sh脚本nova-compute:使用shell模块运行iaas-install-nova-compute.sh脚本neutron-controller:使用shell模块运行iaas-install-neutron-controller.sh脚本neutron-compute:使用shell模块运行iaas-install-neutron-compute.sh脚本Dashboard:使用shell模块运行iaas-install-dashboard.sh脚本

cinder-controller:使用shell模块运行iaas-install-cinder-controller.sh脚本cinder-compute:使用shell模块运行iaas-install-cinder-compute.sh脚本swift-controller:使用shell模块运行iaas-install-swift-controller.sh脚本swift-compute:使用shell模块运行iaas-install-swift-compute.sh脚本heat:使用shell模块运行iaas-install-heat.sh脚本这些脚本都是在前面安装“iaas-openstack”后自动生成的,在/usr/local/bin目录下执行剧本在执行Playbook前,需要完成一下任务:修改Hosts文件此处修改的Hosts文件有/etc/hosts和/etc/ansible/hosts文件/etc/ansible/hosts内容如下:[controller]1[compute]2/etc/hosts内容如下:1controller2compute创建并编辑剧本入口文件install_openstack.yaml文件为执行剧本的入口文件,需要将调用Roles的顺序以及在那个主机上运行,都要在文件中描述,注意此文件创建在/opt/openstack_ansible下,文件内容如下:----h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论