[交流分享] Puppet-5.5.6移植指南 for 中标麒麟7.5【鲲鹏920(ARM64) 】

1 Puppet简介

Puppet是一种LinuxUnixwindows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。

puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端,下载最新的配置文件,并且严格按照配置文件来配置客户端. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息。

官方链接:https://puppet.com/

类别:配置管理系统

语言: Ruby

 

2 软硬件环境

类别

子项

版本

获取地址(方法)

 

硬件

CPU

Kunpeng   920

iBMC

网络

Ethernet-10GE

iBMC

存储

SATA 4T

iBMC

内存

xxG   xxxMHz

iBMC

OS

NeoKylin

7.5

cat   /etc/neokylin-release

Kernel

4.14.0

cat   /proc/version

 

软件

GCC

4.8.5

gcc -v

JDK

1.8.0_191

参考下面安装说明

Ruby

2.6.3

参考下面安装说明

3 编译环境准备

3.1 安装Openjdk

下载并安装到指定目录(如/opt/tools/installed):

wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz

tar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz

mv jdk8u191-b12   /opt/tools/installed/

【注】:使用系统自带Openjdk软件包可以通过执行“yum -y install java-1.8.0*进行安装然后参考如下步骤配置JAVA_HOME环境变量;

配置java环境变量,在/etc/profile文件末尾处增加下面的代码:

JAVA_HOME=/opt/tools/installed/jdk8u191-b12

PATH=$JAVA_HOME/bin:$PATH

export   JAVA_HOME PATH

运行下面命令,使修改的环境变量生效:

source   /etc/profile

3.2 安装GCC等依赖项

挂载OS镜像:

mount -o loop   /home/NeoKylin/nsV7Update5-adv-lic-build05-aarch64.iso /mnt/NeoKylin/

修改/etc/yum.repos.d/ns7-adv.repo文件,配置yum本地源:

[ns7-adv-os]

name=NeoKylin Linux Advanced Server 7 - Os

baseurl= file:///mnt/NeoKylin

gpgcheck=0

gpgkey=file:///mnt/NeoKylin/RPM-GPG-KEY-neokylin-release

enabled=1

运行下面的命令,使yum源配置生效:

yum clean all

yum makecache

yum安装GCC等相关依赖:

sudo yum install -y snappy snappy-devel autoconf automake libtool   git gcc gcc-c++ make cmake openssl openssl-devel ncurses-devel zlib   zlib-devel bzip2 bzip2-devel bzip2-libs readline readline-devel bison zip   unzip tar tcl java-1.8.0* bison* ncurses*

3.3 gccg++c++增加-fsigned-char选项

1、对gcc增加-fsigned-char选项

1)使用which gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)

which gcc

   2)更改gcc的名字(比如改成gcc-arm

mv /usr/bin/gcc   /usr/bin/gcc-arm

3)、进入gcc所在目录执行vi gcc,并填入如下内容保存:

#! /bin/sh

/usr/bin/gcc-arm -fsigned-char "$@"

cd /usr/bin/

vi gcc

   4)、执行chmod +x gcc给脚本添加执行权限

chmod +x gcc

2、对g++增加-fsigned-char选项

1)使用which g++命令寻找g++所在路径(一般位于/usr/bin/g++)

which g++

2)更改g++的名字(比如改成g++-arm

mv /usr/bin/g++   /usr/bin/g++-arm

3)、进入g++所在目录执行vi g++,并填入如下内容保存:

#! /bin/sh

/usr/bin/g++-arm -fsigned-char "$@"

cd /usr/bin/

vi g++

4)、执行chmod +x g++给脚本添加执行权限

chmod +x g++

3、对c++增加-fsigned-char选项

1)使用which c++命令寻找g++所在路径(一般位于/usr/bin/c++)

which c++

   2)更改c++的名字(比如改成c++-arm

mv /usr/bin/c++   /usr/bin/c++-arm

3)、进入c++所在目录执行vi c++,并填入如下内容保存:

#! /bin/sh

/usr/bin/c++-arm -fsigned-char "$@"

cd /usr/bin/

vi c++

   4)、执行chmod +x c++给脚本添加执行权限

chmod +x c++

 

 

4 软件移植分析

1、使用checkSo工具(获取地址:https://bbs.huaweicloud.com/forum/thread-22679-1-1.html检查puppet-5.5.6对应x86的安装包或源码包是否有依赖x86so文件,通过检查puppet-5.5.6的源码5.5.6.tar.gz没有发现有依赖的x86架构的so文件。

 

 

5 依赖库编译

5.1 编译安装ruby

1、下载ruby-2.6.3源码,并解压

wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz

tar   -zxvf ruby-2.6.3.tar.gz

cd ruby-2.6.3/

image.png

2、执行configure进行编译配置

./configure   --prefix=/home/test/ruby

3、执行make进行编译

make

image.png

4、执行make install进行安装

make install

image.png

5、查看编译后的内容

cd   /home/test/ruby/

ls

image.png

 

5.2 安装ruby with openssl

1、进入ruby-2.6.3源码解压路径的ext/openssl路径

cd /home/ruby-2.6.3/ext/openssl/

image.png

2、通过ruby生成Makefile

/home/test/ruby/bin/ruby   extconf.rb

image.png

3、修改Makefile

vi   Makefile

增加一行

top_srcdir = ../../

image.png

4、执行make编译

make

image.png

5、执行make install安装

make   install

image.png

 

5.3 安装facterhiera

1、安装puppet依赖包facter

/home/test/ruby/bin/gem install facter

image.png

2、安装puppet依赖包hiera

/home/test/ruby/bin/gem install hiera

image.png

 

 

6 Puppet-5.5.6编译

6.1 下载源码

1、下载代码并解压:

wget https://github.com/puppetlabs/puppet/archive/5.5.6.tar.gz

tar -zxvf 5.5.6.tar.gz

2、进入puppet-5.5.6源码解压目录

cd puppet-5.5.6/

image.png

6.2 执行编译安装

1、安装puppet依赖:

/home/test/ruby/bin/bundle install   --path .bundle

image.png

image.png

2、安装puppet:

/home/test/ruby/bin/ruby install.rb

image.png

注:puppet安装在/home/test/ruby/bin/路径;

image.png

 

7 验证

1、编译验证

使用checkSo工具(获取地址:https://bbs.huaweicloud.com/forum/thread-22679-1-1.html)检查编译后的/home/test/ruby/路径中是否不再含有依赖的x86架构的so文件,检查方法参考工具中的 《CheckSo使用说明.docx》,如果还有依赖的x86架构的so文件,则需要继续完成对应jar包的编译,直到无依赖的x86架构的so文件后,再次编译该组件并通过checkSo工具检查确认,编译后的组件包不再有依赖的x86架构的so文件则表明编译成功。

通过checkSo工具检查/home/test/ruby/路径下不存在x86相关依赖;

2、功能验证

1)、配置puppet server

cd /home/puppet-5.5.6/

cp ext/redhat/server.init   /etc/init.d/puppetserver

vim /etc/init.d/puppetserver

53PUPPETMASTER=/usr/bin/puppet修改为PUPPETMASTER=/home/test/ruby/bin/puppet

image.png

2)、启动puppet server

chmod +x /etc/init.d/puppetserver

useradd puppet

chown puppet:puppet /etc/init.d/puppetserver

/etc/init.d/puppetserver restart

image.png

3)、查看puppet server状态

/etc/init.d/puppetserver status

image.png

 

 

8 参考信息

更多关于puppet信息参考官网:https://puppet.com/


9 FAQ

9.1 git clone报证书错误

9.1.1 问题现象

image.png

9.1.2 解决方法

git config --global http."sslVerify" false

9.2 wget下载https链接报证书错误

9.2.1 问题现象

image.png

9.2.2 解决方法

在下载命令后面跟参数--no-check-certificate

9.3 Puppet server启动报Failed to start SYSV错误

9.3.1 问题现象

报错“Failed to start SYSV:server for the puppet system management tool”以及“Could not change user to puppet. User does not exist and is required to continue.

image.png

9.3.2 解决方法

创建puppet账号并将/etc/init.d/puppetserver属组改为puppet

useradd puppet

chown puppet:puppet /etc/init.d/puppetserver

image.png

重启/etc/init.d/puppetserver

/etc/init.d/puppetserver restart

image.png

查看puppet server状态

/etc/init.d/puppetserver status

image.png