Jenkins + Ansible + svn自动化部署
准备条件:centos 8、dk-8u301-linux-x64.rpm 、 jenkins-2.312-1.1.noarch.rpm
[root@t8 centos]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
1、ansible安装及配置
1.1、安装epel扩展源
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
1.2、dnf安装ansible
dnf install ansible
[root@t8 opt]# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
Last metadata expiration check: 2:29:15 ago on Fri 17 Sep 2021 03:29:23 PM CST.
epel-release-latest-8.noarch.rpm 80 kB/s | 23 kB 00:00
Dependencies resolved.
=============================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================
Upgrading:
epel-release noarch 8-13.el8 @commandline 23 k
Transaction Summary
=============================================================================================================================
Upgrade 1 Package
Total size: 23 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: epel-release-8-13.el8.noarch 1/1
Upgrading : epel-release-8-13.el8.noarch 1/2
Cleanup : epel-release-8-11.el8.noarch 2/2
Running scriptlet: epel-release-8-11.el8.noarch 2/2
Verifying : epel-release-8-13.el8.noarch 1/2
Verifying : epel-release-8-11.el8.noarch 2/2
Upgraded:
epel-release-8-13.el8.noarch
Complete!
[root@t8 opt]# dnf install ansible
Last metadata expiration check: 2:29:29 ago on Fri 17 Sep 2021 03:29:23 PM CST.
Dependencies resolved.
=============================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================
Installing:
ansible noarch 2.9.25-1.el8 epel 17 M
Installing dependencies:
libsodium x86_64 1.0.18-2.el8 epel 162 k
python3-bcrypt x86_64 3.1.6-2.el8.1 epel 44 k
python3-jmespath noarch 0.9.0-11.el8 appstream 45 k
python3-pyasn1 noarch 0.3.7-6.el8 appstream 126 k
python3-pynacl x86_64 1.3.0-5.el8 epel 100 k
sshpass x86_64 1.06-9.el8 epel 27 k
Installing weak dependencies:
python3-paramiko noarch 2.4.3-1.el8 epel 289 k
Transaction Summary
=============================================================================================================================
Install 8 Packages
Total download size: 18 M
Installed size: 99 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): python3-jmespath-0.9.0-11.el8.noarch.rpm 1.2 MB/s | 45 kB 00:00
(2/8): python3-pyasn1-0.3.7-6.el8.noarch.rpm 2.7 MB/s | 126 kB 00:00
(3/8): libsodium-1.0.18-2.el8.x86_64.rpm 3.3 MB/s | 162 kB 00:00
(4/8): python3-bcrypt-3.1.6-2.el8.1.x86_64.rpm 178 kB/s | 44 kB 00:00
(5/8): python3-paramiko-2.4.3-1.el8.noarch.rpm 1.2 MB/s | 289 kB 00:00
(6/8): ansible-2.9.25-1.el8.noarch.rpm 30 MB/s | 17 MB 00:00
(7/8): sshpass-1.06-9.el8.x86_64.rpm 112 kB/s | 27 kB 00:00
(8/8): python3-pynacl-1.3.0-5.el8.x86_64.rpm 367 kB/s | 100 kB 00:00
-----------------------------------------------------------------------------------------------------------------------------
Total 16 MB/s | 18 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : sshpass-1.06-9.el8.x86_64 1/8
Installing : python3-bcrypt-3.1.6-2.el8.1.x86_64 2/8
Installing : libsodium-1.0.18-2.el8.x86_64 3/8
Installing : python3-pynacl-1.3.0-5.el8.x86_64 4/8
Installing : python3-pyasn1-0.3.7-6.el8.noarch 5/8
Installing : python3-paramiko-2.4.3-1.el8.noarch 6/8
Installing : python3-jmespath-0.9.0-11.el8.noarch 7/8
Installing : ansible-2.9.25-1.el8.noarch 8/8
Running scriptlet: ansible-2.9.25-1.el8.noarch 8/8
Verifying : python3-jmespath-0.9.0-11.el8.noarch 1/8
Verifying : python3-pyasn1-0.3.7-6.el8.noarch 2/8
Verifying : ansible-2.9.25-1.el8.noarch 3/8
Verifying : libsodium-1.0.18-2.el8.x86_64 4/8
Verifying : python3-bcrypt-3.1.6-2.el8.1.x86_64 5/8
Verifying : python3-paramiko-2.4.3-1.el8.noarch 6/8
Verifying : python3-pynacl-1.3.0-5.el8.x86_64 7/8
Verifying : sshpass-1.06-9.el8.x86_64 8/8
Installed:
ansible-2.9.25-1.el8.noarch libsodium-1.0.18-2.el8.x86_64 python3-bcrypt-3.1.6-2.el8.1.x86_64
python3-jmespath-0.9.0-11.el8.noarch python3-paramiko-2.4.3-1.el8.noarch python3-pyasn1-0.3.7-6.el8.noarch
python3-pynacl-1.3.0-5.el8.x86_64 sshpass-1.06-9.el8.x86_64
Complete!
[root@t8 opt]# ansible --version
ansible 2.9.25
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/admin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Mar 19 2021, 05:13:41) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)]
1.3、ansible免密登录设置
1.3.1、生成密钥
[root@t8 .ssh]# ssh-keygen (一直回车)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kd8LqaUWG2MKc8V6fSmVDQ8PlTbMCyrjwKkNnUEhgyk root@c7.7-44
The key's randomart image is:
+---[RSA 2048]----+
| oo.o. ++.. |
|E o o.. . .O* |
| . o += .oo+o |
| . *oo+.+ .. |
| o+ooSoB + |
| .+.+.O + . |
| . = . |
| . |
| |
+----[SHA256]-----+
1.3.2、拷贝公钥到目标主机
[root@t8 .ssh]# cd /root/.ssh/
[root@t8 .ssh]# ssh-copy-id -i id_rsa.pub root@172.31.18.218
注意
aws主机会有报错
错误的全称是 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
就是ssh 后面加上ip,但是过不去.
我是用xshell连接的,现在是root用户
其中/etc/ssh/sshd_config下面的
PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthetication yes
strictModes yes
1.3.3、ansible被控主机设置
编辑/etc/ansible/hosts
[root@t8 ~]# vim /etc/ansible/hosts
[web]
172.31.18.218
验证
[root@t8 ~]# ansible web -m ping
172.31.18.218 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}
2、安装jenkins
2.1、java安装
[root@t8 centos]# rpm -ivh jdk-8u301-linux-x64.rpm
warning: jdk-8u301-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8-2000:1.8.0_301-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@t8 centos]# java -V
Unrecognized option: -V
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
[root@t8 centos]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
[root@t8 centos]#
2.2、安装jenkins
/var/lib/jenkins 主目录
/etc/init.d/jenkins 启动文件
/var/cache/jenkins 程序文件
/var/log/jenkins 日志文件
[root@t8 centos]# ls
AnsibleUI-master go.sh jenkins-2.312-1.1.noarch.rpm v2ray.sh
apache-maven-3.6.3-bin.tar.gz jdk-8u301-linux-x64.rpm Python-3.7.3.tgz
[root@t8 centos]# rpm -ivh jenkins-2.312-1.1.noarch.rpm
warning: jenkins-2.312-1.1.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 45f2c3d5: NOKEY
error: Failed dependencies:
daemonize is needed by jenkins-2.312-1.1.noarch
[root@t8 centos]# yum install daemonize
Repository epel is listed more than once in the configuration
Last metadata expiration check: 0:37:59 ago on Fri 17 Sep 2021 02:45:05 PM CST.
Dependencies resolved.
=============================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================
Installing:
daemonize x86_64 1.7.8-1.el8 epel 27 k
Transaction Summary
=============================================================================================================================
Install 1 Package
Total download size: 27 k
Installed size: 34 k
Is this ok [y/N]: y
Downloading Packages:
daemonize-1.7.8-1.el8.x86_64.rpm 278 kB/s | 27 kB 00:00
-----------------------------------------------------------------------------------------------------------------------------
Total 274 kB/s | 27 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : daemonize-1.7.8-1.el8.x86_64 1/1
Running scriptlet: daemonize-1.7.8-1.el8.x86_64 1/1
Verifying : daemonize-1.7.8-1.el8.x86_64 1/1
Installed:
daemonize-1.7.8-1.el8.x86_64
Complete!
[root@t8 centos]# rpm -ivh jenkins-2.312-1.1.noarch.rpm
warning: jenkins-2.312-1.1.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 45f2c3d5: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:jenkins-2.312-1.1 ################################# [100%]
[root@t8 centos]#
安装过程出现一个问题
这里根据提示直接yum install daemonize
后面就安装正常
2.3、修改Jenkins配置
主配置文件主要修改运行用户即可: /etc/sysconfig/jenkins
[root@t8 ~]# vim /etc/sysconfig/jenkin
JENKINS_USER="root"
2.4、启动并设置开机启动
[root@t8 ~]# systemctl restart jenkins && systemctl enable jenkins
2.5、浏览器访问
访问: http://server_ip:8080
查看 admin 默认密码: cat /var/lib/jenkins/secrets/initialAdminPassword
选择默认插件 进行安装
如果新手不知道选什么是自己需要的,就默认推荐的就可以了
等待全部安装完成即可
使用admin账户继续
安装完成
3、svn插件及项目构建
3.1、svn插件安装
svn插件完成安装
3.2、项目构建:
a新建Item
b输入一个任务名称:uat
c选择自由项目
d配置源码管理:选择subversion-Repository URL及账号密码设置
e配置脚本
3.3、编辑脚本及构建后操作
看自己业务需要,写自己的脚本,让ansible去执行,这样管理百来台机器还是很轻松的
关注我,了解更多运维知识