GVKun编程网logo

CentOS 7 部署saltstack服务(centos7搭建ss)

26

在本文中,我们将为您详细介绍CentOS7部署saltstack服务的相关知识,并且为您解答关于centos7搭建ss的疑问,此外,我们还会提供一些关于Saltstack安装(CentOS7.x)、0

在本文中,我们将为您详细介绍CentOS 7 部署saltstack服务的相关知识,并且为您解答关于centos7搭建ss的疑问,此外,我们还会提供一些关于 Saltstack安装 (CentOS7.x)、010-SaltStack及SaltStack Web UI安装部署、之(一) 环境部署、centos 6.3x64 安装saltstack的有用信息。

本文目录一览:

CentOS 7 部署saltstack服务(centos7搭建ss)

CentOS 7 部署saltstack服务(centos7搭建ss)

SaltStack 简介

  • Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。salt底层采用动态的连接总线,使其可以用于编配,远程执行,配置管理等等.
  • SaltStack 官网:https://saltstack.com/
  • SaltStack 官方文档:https://docs.saltstack.com/en/latest/
  • SaltStack github地址:

SaltStack 安装

  • 安装salt-master on Salt Master Host.
# install from EPEL
[root@linuxprobe~]# yum --enablerepo=epel -y install salt-master
[root@linuxprobe~]# systemctl start salt-master
[root@linuxprobe~]# systemctl enable salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.
  • On Salt Master Server,If Firewalld is running,allow related ports.
[root@linuxprobe~]# firewall-cmd --add-port={4505/tcp,4506/tcp} --permanent
success
[root@linuxprobe~]# firewall-cmd --reload
success
  • 安装 salt-minion on Salt Minion Host.
# install from EPEL
[root@vdevops~]# yum --enablerepo=epel -y install salt-minion
[root@vdevops~]# sed -i 's/\#master: salt/master: linuxprobe.org/' /etc/salt/minion
[root@vdevops~]# systemctl start salt-minion
[root@vdevops~]# systemctl enable salt-minion 
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.

Salt Clinet客户端启动之后会发送public-key 到Salt Master获取认证. Salt Master 可以接收client发过来的认证请求。

# show the list of keys [root@linuxprobe master]# salt-key -L Accepted Keys: Denied Keys: Unaccepted Keys: vdevops.org Rejected Keys: # permit all keys with "A" option [root@linuxprobe master]# salt-key -A The following keys are going to be accepted: Unaccepted Keys: vdevops.org Proceed? [n/Y] y #确认 Key for minion vdevops.org accepted. [root@linuxprobe master]# salt-key -L Accepted Keys: vdevops.org Denied Keys: Unaccepted Keys: Rejected Keys: # 测试连接 [root@linuxprobe ~]# salt '*' test.ping vdevops.org: True

saltstack基础使用

Saltstack的基础用法就是从master执行命令同步到客户端
salt [option] [target] [function] [arguments]
参考文档:https://docs.saltstack.com/en/latest/ref/modules/all/index.html

  • 查看函数用法
[root@linuxprobe ~]# salt '*' sys.doc | less
'acl.delfacl:'
    Remove specific FACL from the specified file(s)
    CLI Examples:
        salt '*' acl.delfacl user myuser /tmp/house/kitchen
        salt '*' acl.delfacl default:group mygroup /tmp/house/kitchen
        salt '*' acl.delfacl d:u myuser /tmp/house/kitchen
        salt '*' acl.delfacl g myuser /tmp/house/kitchen /tmp/house/livingroom
        salt '*' acl.delfacl user myuser /tmp/house/kitchen recursive=True
'acl.getfacl:'
    Return (extremely verbose) map of FACLs on specified file(s)
    CLI Examples:
        salt '*' acl.getfacl /tmp/house/kitchen
        salt '*' acl.getfacl /tmp/house/kitchen /tmp/house/livingroom
        salt '*' acl.getfacl /tmp/house/kitchen /tmp/house/livingroom recursive=True
        ...
  • It’s possible to specify targets with varIoUs way
# specify all Minions
# test.ping means that make sure Minions are acitive
[root@linuxprobe ~]# salt '*' test.ping
vdevops.org:
 True
linuxprobe.org:
 True
# specify a Minion "vdevops.org"
# disk.usage means that make sure current disk usag 
[root@linuxprobe ~]# salt 'vdevops.org' disk.usage
vdevops.org:
 ----------
 /:
 ----------
 1K-blocks:
 18307072
 available:
 16866300
 capacity:
 8%
 filesystem:
 /dev/mapper/centos-root
 used:
 1440772 
# specify some Minions with List(comma separated)
# status.loadavg means that make sure load averages 
[root@linuxprobe ~]# salt -L 'vdevops.org,linuxprobe.org' status.loadavg 
vdevops.org:
 ----------
 1-min:
 0.0
 15-min:
 0.05
 5-min:
 0.01
linuxprobe.org:
 ----------
 1-min:
 0.02
 15-min:
 0.06
 5-min:
 0.08
# specify Minions with expression (example means "node00-99.srv.world")
# selinux.getenforce means that make sure SELinux operating mode
[root@dlp ~]# salt -E 'node[0-9][0-9].srv.world' selinux.getenforce
node02.srv.world:
 Enforcing
node01.srv.world:
 Enforcing 
# specify Minions which OS is CentOS with Grains Data
# grains.item kernelrelease means that make sure Kernel version from grains.item data
# Grains is the word used in Salt and which keeps Minions' OS data and others 
[root@linuxprobe ~]# salt -G 'os:CentOS' grains.item kernelrelease
vdevops.org:
 ----------
 kernelrelease:
 3.10.0-327.36.2.el7.x86_64
linuxprobe.org:
 ----------
 kernelrelease:
 3.10.0-327.el7.x86_64 
  • 自定义目标组
[root@linuxprobe ~]# vi /etc/salt/master
# line 12: uncomment
default_include: master.d/*.conf
[root@linuxprobe ~]# mkdir /etc/salt/master.d
[root@linuxprobe ~]# vi /etc/salt/master.d/nodegroups.conf 
# create new
# group_org : 
# group_os : specify OS is CentOS
nodegroups:
  group_org: 'L@linuxprobe.org,vdevops.org'
  group_os: 'G@os:CentOS'
[root@linuxprobe ~]# systemctl restart salt-master
# run to a target group_os
[root@linuxprobe master.d]# salt -N 'group_os' cmd.run 'hostname'
vdevops.org:
    vdevops.org
linuxprobe.org:
    linuxprobe.org

Salt State文件使用

学习如何配置Salt State文件对于学习saltstack和使用salt很重要,state文件采用yaml格式编写

  • 首先,定义文件根目录放状态,默认/srv/salt
[root@linuxprobe ~]# vi /etc/salt/master
# line 417: uncomment and define root directory
file_roots:
  base:
    - /srv/salt
[root@linuxprobe ~]# mkdir /srv/salt 

要将状态文件放在根目录下,可以使用salt命令将配置应用到Minions,下面的示例,将wget包安装到Minions

 # (any file name).sls

[root@linuxprobe ~]# vi /srv/salt/default.sls
# create new
install_wget: pkg.installed: - name: wget [root@linuxprobe ~]# salt "vdevops.org" state.sls default vdevops.org: ---------- ID: install_wget
 Function: pkg.installed
 Name: wget
 Result: True
 Comment: The following packages were installed/updated: wget
 Started: 18:54:59.514712
 Duration: 14193.327 ms
 Changes: 
 ----------
 wget:
 ----------
 new:
 1.14-10.el7_0.1
 old:

Summary ------------
Succeeded: 1 (changed=1)
Failed: 0 ------------
Total states run:     1
# 确认
[root@linuxprobe ~]# salt "vdevops.org" cmd.run 'rpm -q wget'
vdevops.org:
 wget-1.14-10.el7_0.1.x86_64

配置状态树的示例

  • 将top.sls称为“顶部文件”在您定义的根目录下
root@linuxprobe ~]# vi /srv/salt/top.sls
base:
  # define target Minions
  '*':
    # define the name of State file
    - default # create State file defined in Top File
[root@linuxprobe ~]# vi /srv/salt/default.sls
# for example,Install and start httpd and MariaDB and also install PHP

webserver:
  pkg.installed:
    - pkgs:       - httpd       - PHP       - PHP-mbstring       - PHP-pear       - mariadb-server  /var/www/html/index.PHP:
  file:
    - managed     - source: salt://httpd/index.PHP     - require:       - pkg: webserver 
# initial setup script
/tmp/setup.sql:
  file:
    - managed     - source: salt://httpd/setup.sql 
enable_httpd:
  service.running:
    - name: httpd     - enable: True     - require:       - pkg: webserver 
enable_mariadb:
  service.running:
    - name: mariadb     - enable: True     - require:       - pkg: webserver 
setup_mariadb:
  cmd.run:
    - name: '/bin/MysqL -u root < /tmp/setup.sql'     - require:       - service: enable_mariadb 
# if Firewalld is running,configure services
{% set fw_status = salt['service.status']('firewalld') %}
{% if fw_status %}
setup_fw:
  cmd.run:
    - names:       - '/bin/firewall-cmd --add-service={http,https,MysqL}'       - '/bin/firewall-cmd --add-service={http,MysqL} --permanent' {% endif %}
 # create index.PHP template
[root@linuxprobe ~]# mkdir /srv/salt/httpd
[root@linuxprobe ~]# vi /srv/salt/httpd/index.PHP
<?PHP
   print "Salt State Test Page\n";
?>
# create MariaDB initial setup script
[root@linuxprobe ~]# vi /srv/salt/httpd/setup.sql
set password for root@localhost=password('password');
set password for root@'127.0.0.1'=password('password'); 
delete from MysqL.user where user='';
delete from MysqL.user where password='';
drop database test;
  • 测试,配置文件是否正确
[root@linuxprobe ~]# salt "*" state.apply test=True
vdevops.org:
    ----------
    cmd_|-setup_fw_|-/bin/firewall-cmd --add-service={http,MysqL} --permanent_|-run:
        ----------
        __run_num__:
            7
        changes:
            ----------
        comment:
            Command "/bin/firewall-cmd --add-service={http,MysqL} --permanent" would have been executed
        duration:
            0.198
        name:
            /bin/firewall-cmd --add-service={http,MysqL} --permanent
        result:
            None
        start_time:
            19:09:39.481991
    cmd_|-setup_fw_|-/bin/firewall-cmd --add-service={http,MysqL}_|-run:
        ----------
        __run_num__:
            6
        changes:
            ----------
        comment:
            Command "/bin/firewall-cmd --add-service={http,MysqL}" would have been executed
        duration:
            0.328
        name:
            /bin/firewall-cmd --add-service={http,MysqL}
        result:
            None
        start_time:
            19:09:39.481608
    cmd_|-setup_mariadb_|-/bin/MysqL -u root < /tmp/setup.sql_|-run:
...
# 不报错执行
[root@linuxprobe ~]# salt "*" state.apply
  • 确认安装的服务是否正常
[root@linuxprobe ~]# salt "vdevops.org" cmd.run 'systemctl status httpd'
vdevops.org:
    * httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2016-11-15 19:11:41 CST; 20min ago
         Docs: man:httpd(8)
               man:apachectl(8)
     Main PID: 3261 (httpd)
       Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
       CGroup: /system.slice/httpd.service
               |-3261 /usr/sbin/httpd -DFOREGROUND
               |-3262 /usr/sbin/httpd -DFOREGROUND
               |-3263 /usr/sbin/httpd -DFOREGROUND
               |-3264 /usr/sbin/httpd -DFOREGROUND
               |-3265 /usr/sbin/httpd -DFOREGROUND
               `-3266 /usr/sbin/httpd -DFOREGROUND Nov 15 19:11:41 vdevops.org systemd[1]: Starting The Apache HTTP Server... Nov 15 19:11:41 vdevops.org httpd[3261]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name,using vdevops.org. Set the 'ServerName' directive globally to suppress this message Nov 15 19:11:41 vdevops.org systemd[1]: Started The Apache HTTP Server. [root@linuxprobe ~]# salt "vdevops.org" cmd.run 'systemctl status mariadb' vdevops.org: * mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2016-11-15 19:11:45 CST; 21min ago Main PID: 3397 (MysqLd_safe) CGroup: /system.slice/mariadb.service |-3397 /bin/sh /usr/bin/MysqLd_safe --basedir=/usr `-3554 /usr/libexec/MysqLd --basedir=/usr --datadir=/var/lib/MysqL --plugin-dir=/usr/lib64/MysqL/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/MysqL/MysqL.sock

    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: The latest information about MariaDB is available at http://mariadb.org/.
    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: You can find additional information about the MysqL part at:
    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: http://dev.MysqL.com
    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: Support MariaDB development by buying support/new features from MariaDB
    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: Corporation Ab. You can contact us about this at sales@mariadb.com.
    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: Alternatively consider joining our community based development effort:
    Nov 15 19:11:42 vdevops.org mariadb-prepare-db-dir[3318]: http://mariadb.com/kb/en/contributing-to-the-mariadb-project/
    Nov 15 19:11:42 vdevops.org MysqLd_safe[3397]: 161115 19:11:42 MysqLd_safe Logging to '/var/log/mariadb/mariadb.log'.
    Nov 15 19:11:42 vdevops.org MysqLd_safe[3397]: 161115 19:11:42 MysqLd_safe Starting MysqLd daemon with databases from /var/lib/MysqL
    Nov 15 19:11:45 vdevops.org systemd[1]: Started MariaDB database server.
# 测试PHP页面
[root@linuxprobe ~]# curl http://vdevops.org/index.PHP
Salt State Test Page

Salt : 使用 Salt-cp

[root@linuxprobe ~]# salt-cp '*' anaconda-ks.cfg /tmp/
{'vdevops.org': {'/tmp/anaconda-ks.cfg': True}}

  Saltstack安装   (CentOS7.x)

Saltstack安装 (CentOS7.x)

一、安装基础:

1.导入SaltStack仓库key:

wgethttps://repo.saltstack.com/yum/rhel7/SALTSTACK-GPG-KEY.pub
rpm--importSALTSTACK-GPG-KEY.pub
rm-fSALTSTACK-GPG-KEY.pub

2.创建新的YUM源文件并“/etc/yum.repos.d/saltstack.repo”编辑如下内容

[saltstack-repo]
name=SaltStackrepoforRHEL/CentOS7
baseurl=https://repo.saltstack.com/yum/rhel7
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/rhel7/SALTSTACK-GPG-KEY.pub

3.安装SaltStack软件

yumcleanexpire-cache
yumupdate
安装salt-minion,salt-master
yuminstallsalt-master
yuminstallsalt-minion

4.修改配置文件

minion:
vi/etc/salt/minion
master:11.1.0.44
cat/etc/salt/minion|grep"^master"
master:11.1.0.44
打开该文件,这里有两项是必须配置项。其一、找到如下行
#resolved,thentheminionwillfailtostart.
#master:salt
在其下增加master主机的配置
#resolved,thentheminionwillfailtostart.
#master:salt
master:11.1.0.44
这里直接配置的是IP地址,也可以配置成主机名,如果配置成主机名的话,需要在/etc/hosts文件中master主机对应的IP,
如果使用内部DNS的例外,可以在内部DNS上的统一配置。
其二、找到如下段部分
RejectedKeys:在其下增加一行内容
id:host111
这里是指定当前主机的id号,这在后面master认证和master调用命令执行时显示的名称,可以根据实际识别需要填写。
另外需要注意的是,以上两处配置冒号后面都需要有一个空格,不然会报如下错误:
master:
vi/etc/salt/master
interface:11.1.0.44
cat/etc/salt/master|grep"^interface"
interface:11..1.0.44
注意:master和interface前面有两个空格,如果没有启动的时候回出现错误;

5.启动服务:

Master
chkconfigsalt-masteron
systemctlrestartsalt-master.service
Minion
chkconfigsalt-minionon
systemctlrestartsalt-minion.service

6,测试saltstack

查看minion列表:
[root@salt-master~]#salt-key-L
AcceptedKeys:
DeniedKeys:
UnacceptedKeys:
host111
RejectedKeys:
接收所有key:
salt-key-A
在这个过程中会提示Y确认,确认即可;
显示结果:
Keyforminionhost111accepted.
[root@salt-master~]#salt-key-L
AcceptedKeys:
host111
DeniedKeys:
UnacceptedKeys:
RejectedKeys:

如果对客户端信任,可以让master自动接受请求,在/etc/salt/master配置

auto_accept:True
注:可以通过以下方法确认具体的版本:
[root@salt-master~]#salt'*'test.versions_report
host111:
SaltVersion:
Salt:2016.3.4

DependencyVersions:
cffi:notinstalled
cherrypy:notinstalled
dateutil:notinstalled
gitdb:notinstalled
gitpython:notinstalled
ioflo:notinstalled
Jinja2:2.7.2
libgit2:notinstalled
libnacl:notinstalled
M2Crypto:notinstalled
Mako:notinstalled
msgpack-pure:notinstalled
msgpack-python:0.4.6
MysqL-python:notinstalled
pycparser:notinstalled
pycrypto:2.6.1
pygit2:notinstalled
Python:2.7.5(default,Nov202015,02:00:19)
python-gnupg:notinstalled
PyYAML:3.11
pyzmq:15.3.0
RAET:notinstalled
smmap:notinstalled
timelib:notinstalled
Tornado:4.2.1
ZMQ:4.1.4

SystemVersions:
dist:centos7.2.1511Core
machine:x86_64
release:3.10.0-327.el7.x86_64
system:Linux
version:CentOSLinux7.2.1511Core

二、命令执行

1、测试minion之间的通信是否正常

[root@salt-master~]#salt'*'test.ping
host111:
True
True代表正常,*代表所有主机,也可以选择单台或者按组及正则进行匹配等,
这个可以参看下官方相关文档。其默认执行的正则是shell正则,也可以使用其他正则或组等,如下:
salt'shell正则'命令
salt-E'prel正则'
salt-N$group命令
salt-L'server_id1,server_id2,server_id3'命令

2、执行命令操作

常用的操作类似如下
salt'*'cmd.run"ab-n10-c2http://www.111cn.net/"
salt'*'grains.ls查看grains分类
salt'*'grains.items查看grains所有信息
salt'*'grains.itemosrelease查看grains某个信息
salt'*'cmd.run"/App/Nginx/sbin/Nginx-v"命令执行使用cmd.run参数,由于输出内容较多,
不再一一列出,这里只列出一台查看Nginx版本的:
[root@salt-master~]#salt'*'cmd.run'Nginx-v'
host111:
Nginxversion:Nginx/1.10.2

好了至此我们的saltstack 基本使用方法已经给出,后续会演示更深层次像函数的用法

010-SaltStack及SaltStack Web UI安装部署

010-SaltStack及SaltStack Web UI安装部署

saltstack web uiweb平台界面
saltapi项目主页:http://salt-api.readthedocs.org/en/latest/
halite 项目主页:https://github.com/saltstack/halite
官方文档:https://github.com/saltstack/
https://docs.saltstack.com/en/latest/topics/tutorials/halite.html

master装web界面

  1. cd /var/www    下载halite
    地址https://github.com/saltstack/halite
  2. 生成index.html文件
    解压并进入halite目录下
  3. cd halite/halite
cd halite/halite
./genindex.py -C
  1. 安装salt-api
yum install salt-api
  1. 创建用户salt-api的用户(非root)
useradd -M -s /sbin/nologin slsapi
echo ''slsapi'' | passwd slsapi --stdin
  1. 在master端添加配置文件 ,在/etc/salt/master.d中加入saltweb.conf:
    vi /etc/salt/master.d/saltweb.conf,添加如下内容:
rest_cherrypy:
 host: 0.0.0.0 port: 8080 debug: true static: /var/www/halite/halite #修改为自己的存储路径 app: /var/www/halite/halite/index.html external_auth: pam: slsapi: #此处修改为自己的用户 - .* - ''@runner'' - ''@wheel'' 

然后重启master。systemctl restart salt-master

 

建立用户测试:
salt -a pam \*  test.ping
输入用户和密码 如看到minion返回信息 则表示登陆验证成功;
  1. 配置salt-api启动项,并启动

设置api开机自启

systemctl enable salt-api.service

修改服务文件vi /usr/lib/systemd/system/salt-api.service,修改ExecStart项

ExecStart=/usr/bin/python /home/software/halite-master/halite/server_bottle.py -d -C -l debug -s cherrypy (这步骤可省略) 

然后启动salt-api

systemctl daemon-reload
systemctl start salt-api
如无效则用下面方法启动
cd /var/www/halite/halite
salt-api -d
或 
python server_bottle.py -d -C -l debug -s cherrypy
 
 
登录测试:
http://192.168.1.230:8080/app/
https://www.cnblogs.com/agnewee/p/6487262.html
 
 

salt web管理平台:Oneops的部署

 

https://github.com/net592/OneOps
部署环境:centos6.2; django-1.9.5;python-2.7.11
git并没有给出部署文档,所以以下只是自己根据报错尝试部署
1.git克隆源代码

git clone https://github.com/net592/OneOps.git
1
2.安装依赖包

pip install django-crontab
pip install django-celery
pip install kombu
pip install billiard
pip install pytz

 

<Centos7+Packstack学习Openstack Mitaka>之(一) 环境部署

之(一) 环境部署

学习Openstack的前两个月,时间都花在环境部署上了,主要是版本的问题,导致了一系列的麻烦. 之前使用devstack已经部署成功了,但是manila不能用,残念,问题主要出在网络上,研究完manila的网络模块之后再回头找原因吧. 不打算继续在环境上花时间了,这里给了一套可以重复的安装部署流程,使用packstack.

1. 安装环境

虚拟机软件: VirtualBox
Centos镜像: CentOS-7-x86_64-DVD-1511(1).iso
网络: 一张NAT网卡 (默认IP: 10.0.2.15)

2. packstack安装过程

2.1 增加对packstack的解析

安装过程中可能会出现以下错误:

* unable to connect to epmd (port 4369) on packstack

原因是因为配置文件里将该进程放到了packstack这台主机上. 为了解决这个问题,增加域名解析就行了:

[root@packstack ~]# uname -a
[root@packstack ~]# vim /etc/hosts
10.0.2.15   packstack
192.168.9.217   server

其中,server是我自己搭建的Centos7的本地源. 不使用本地源的不用增加这一项.

2.2 修改Centos和epel源

(1) Centos源

[root@packstack ~]# cd /etc/yum.repos.d/
[root@packstack ~]# mkdir bak
[root@packstack ~]# mv CentOS-* bak/
[root@packstack ~]# mv local_mitaka.repo /etc/yum.repos.d/

这里我使用了本地源. 没有搭建本地源的朋友直接修改成阿里云开源镜像即可. 方法类似下面的epel源.

(2) epel源

[root@packstack ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@packstack ~]# yum clean all
[root@packstack ~]# yum makecache

2.3 关防火墙和seliunx

[root@packstack ~]# systemctl stop firewalld
[root@packstack ~]# systemctl disable firewalld
[root@packstack ~]# vim /etc/selinux/config 
SELINUX=disabled

2.4 安装packstack包

[root@packstack ~]# yum -y install centos-release-openstack-mitaka epel-release 
[root@packstack ~]# yum -y install openstack-packstack

2.5 准备answer文件

answer文件根据我自己的环境修改过,在下一篇博客中我将给出完整的文件.

[root@packstack ~]# touch packstack-answers-20160915-011640.txt_serverworld第二个版本有manila
[root@packstack ~]# vim packstack-answers-20160915-011640.txt_serverworld第二个版本有manila 

2.6 开始安装

[root@packstack ~]# packstack --answer-file packstack-answers-20160915-011640.txt_serverworld第二个版本有manila 

2.7 切换权限

[root@packstack ~]# source keystonerc_admin 
[root@packstack ~]# cat keystonerc_admin 
[root@packstack ~(keystone_admin)]# manila pool-list
+------+------+---------+------+
| Name | Host | Backend | Pool |
+------+------+---------+------+
+------+------+---------+------+

因为我的重点是研究manila模块,所以安装成功之后第一时间检查了manila模块. 很遗憾,manila模块安装失败. 原因应该是版本的问题,没有时间去具体研究脚本,下面直接给出解决方案. 这一步成功安装,或者不需要manila服务的朋友,可以不用继续向下了.

3. manila服务安装错误排查

3.1 查看日志

[root@packstack ~]# cat /var/log/manila/share.log | grep ERROR
2016-09-16 11:50:08.123 15388 ERROR oslo_service.periodic_task Traceback (most recent call last):
2016-09-16 11:50:08.123 15388 ERROR oslo_service.periodic_task   File "/usr/lib/python2.7/site-packages/oslo_service/periodic_task.py",line 220,in run_periodic_tasks
2016-09-16 11:50:08.123 15388 ERROR oslo_service.periodic_task     task(self,context)
2016-09-16 11:50:08.123 15388 ERROR oslo_service.periodic_task   File "/usr/lib/python2.7/site-packages/manila/utils.py",line 615,in wrapper
2016-09-16 11:50:08.123 15388 ERROR oslo_service.periodic_task     raise exception.Drivernotinitialized(driver=driver_name)
2016-09-16 11:50:08.123 15388 ERROR oslo_service.periodic_task Drivernotinitialized: Share driver 'GenericShareDriver' not initialized.

查看了manila几个进程的日志后发现,是manila-share进程出现错误. 其实可以理解,因为manila pool为空,说明share进程没有成功管理后端存储. 更详细的错误信息如下:

2016-09-15 17:44:06.281 2732 ERROR manila.share.manager [req-c7388245-8da4-44d8-b11a-0788defc2fcc - - - - -] Error encountered during initialization of driver 'GenericShareDriver' on 'packstack@generic' host. Class CIFSHelper cannot be found (['Traceback (most recent call last):\n',' File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py",line 32,in import_class\n return getattr(sys.modules[mod_str],class_str)\n',"AttributeError: 'module' object has no attribute 'CIFSHelper'\n"])
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager Traceback (most recent call last):
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager   File "/usr/lib/python2.7/site-packages/manila/share/manager.py",line 248,in init_host
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager     self.driver.do_setup(ctxt)
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager   File "/usr/lib/python2.7/site-packages/manila/share/drivers/generic.py",line 177,in do_setup
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager     self._setup_helpers()
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager   File "/usr/lib/python2.7/site-packages/manila/share/drivers/generic.py",line 208,in _setup_helpers
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager     helper = importutils.import_class(import_str)
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager   File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py",line 36,in import_class
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager     traceback.format_exception(*sys.exc_info())))
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager ImportError: Class CIFSHelper cannot be found (['Traceback (most recent call last):\n',"AttributeError: 'module' object has no attribute 'CIFSHelper'\n"])
2016-09-15 17:44:06.281 2732 ERROR manila.share.manager 
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task [req-a24899f7-4d96-4780-9f52-1d381654ee74 - - - - -] Error during ShareManager._report_driver_status
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task Traceback (most recent call last):
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task   File "/usr/lib/python2.7/site-packages/oslo_service/periodic_task.py",in run_periodic_tasks
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task     task(self,context)
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task   File "/usr/lib/python2.7/site-packages/manila/utils.py",in wrapper
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task     raise exception.Drivernotinitialized(driver=driver_name)
2016-09-15 17:45:44.317 2732 ERROR oslo_service.periodic_task Drivernotinitialized: Share driver 'GenericShareDriver' not initialized.

很明显,错误的根本原因是找不到CIFSHelper这个类. 查看manila.conf配置文件,发现对generic这个后端存储有如下配置:

share_helpers = CIFS=manila.share.drivers.generic.CIFSHelper,NFS=manila.share.drivers.generic.NFSHelper

这个配置文件是由packstack生成的,应该是版本不一致导致了配置文件信息有误. 查看Liberty版本的manila/manila/share/drivers/generic.py文件,发现该文件有CIFSHelper类. 但是到了Mitaka版本,该文件已经没有这个类了. 因此导致了错误. 配置文件是针对Liberty版本生成的.

下面手动修改配置文件.

3.2 杀掉share进程

3.3 修改配置文件

[root@packstack ~(keystone_admin)]# vim /etc/manila/manila.conf
share_helpers = CIFS=manila.share.drivers.helpers.CIFSHelperIPAccess,NFS=manila.share.drivers.helpers.NFSHelper

3.4 重启manila-share服务

[root@packstack ~]# /usr/bin/python2 /usr/bin/manila-share --config-file /usr/share/manila/manila-dist.conf --config-file /etc/manila/manila.conf --logfile /var/log/manila/share.log

此时再查看manila pool:

[root@packstack ~(keystone_admin)]# manila pool-list
+---------------------------+-----------+---------+---------+
| Name                      | Host      | Backend | Pool    |
+---------------------------+-----------+---------+---------+
| packstack@generic#generic | packstack | generic | generic |
+---------------------------+-----------+---------+---------+

4. Permission denied: ‘/var/log/nova/nova-manage.log’

安装成功后可能还会遇到一个问题,如下:

[root@packstack ~]# cat /var/spool/mail/root
time:           2016年09月15日 星期四 120105cmdline:        /usr/bin/python2 /bin/nova-manage db archive_deleted_rows --max_rows 100
uid:            162 (nova)
abrt_version:   2.1.11
event_log:      
executable:     /bin/nova-manage
hostname:       packstack
kernel:         3.10.0-327.el7.x86_64
last_occurrence: 1473998463
pid:            24458
pkg_arch:       noarch
pkg_epoch:      1
pkg_name:       openstack-nova-common
pkg_release:    1.el7
pkg_version:    13.1.0
runlevel:       N 5
username:       nova

backtrace:
:__init__.py:925:_open:IOError: [Errno 13] Permission denied: '/var/log/nova/nova-manage.log'
:
:Traceback (most recent call last):
:  File "/bin/nova-manage",line 10,in <module>
:    sys.exit(main())
:  File "/usr/lib/python2.7/site-packages/nova/cmd/manage.py",line 1517,in main
:    logging.setup(CONF,"nova")
:  File "/usr/lib/python2.7/site-packages/oslo_log/log.py",line 243,in setup
:    _setup_logging_from_conf(conf,product_name,version)
:  File "/usr/lib/python2.7/site-packages/oslo_log/log.py",line 319,in _setup_logging_from_conf
:    filelog = file_handler(logpath)
:  File "/usr/lib64/python2.7/logging/handlers.py",line 392,in __init__
:    logging.FileHandler.__init__(self,filename,mode,encoding,delay)
:  File "/usr/lib64/python2.7/logging/__init__.py",line 902,in __init__
:    StreamHandler.__init__(self,self._open())
:  File "/usr/lib64/python2.7/logging/__init__.py",line 925,in _open
:    stream = open(self.baseFilename,self.mode)
:IOError: [Errno 13] Permission denied: '/var/log/nova/nova-manage.log'

解决如下:

[root@packstack ~]# chmod 777 /var/log/nova/nova-manage.log
[root@packstack ~]# su -s /bin/sh -c "nova-manage db sync" nova

centos 6.3x64 安装saltstack

centos 6.3x64 安装saltstack

参考文档: http://docs.saltstack.cn/topics/installation/rhel.html http://docs.saltstack.cn/topics/development/hacking.html#installing-for-development http://docs.saltstack.cn/topics/installation/rhel.html#enabling-epel 注意: 1.不要使用pip安装,这样安装了salt,还要自己配置服务 2.不要直接使用yum 安装,也就是文档中提到的第一种方式,这种方法有yum update,会升级cetos 到6.8 一. 环境及准备工作 1. lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch distributor ID: CentOS Description: CentOS release 6.3 (Final) Release: 6.3 Codename: Final 2. uname -a Linux test40 2.6.32-504.30.3.el6.x86_64 #1 SMP Wed Jul 15 10:13:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 3. python -V Python 2.6.6 4. mkdir -p /data/soft/app/python2.6 mkdir -p /data/soft/app/python2.6/env 5.安装pip,setuptools,参考 http://pip-cn.readthedocs.io/en/latest/installing.html,下载地址: https://bootstrap.pypa.io/ a. 下载get-pip.py ,上传至/data/soft/app/python2.6 b. cd /data/soft/app/python2.6/,chmod a+rx get-pip.py,python get-pip.py c. python get-pip.py d. pip -V,显示 pip 8.1.2 from /usr/lib/python2.6/site-packages (python 2.6), 则安装成功 二. 安装 1.使用EPEL安装源 a. exit b. 检查是否安装了epel,rpm -q epel-release c. 手工下载http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm,上传至 /data/soft/app/python2.6 d. rpm -Uvh epel-release-6-8.noarch.rpm e. vim /etc/yum.repos.d/epel.repo, 将baseurl前的注释去掉,并修改为sohu的epel,baseurl=http://mirrors.sohu.com/fedora-epel/6/$basearch,注释掉mirrorlist, f. 使用yum repolist查看epel源是否正确添加,Extra Packages for Enterprise Linux 6 - x86_64 后面的数字大于0即为成功添加 2. 安装 yum install salt-master yum install salt-minion 3. 启动 service salt-master start service salt-minion start

关于CentOS 7 部署saltstack服务centos7搭建ss的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于 Saltstack安装 (CentOS7.x)、010-SaltStack及SaltStack Web UI安装部署、之(一) 环境部署、centos 6.3x64 安装saltstack的相关知识,请在本站寻找。

本文标签: