节点管理
删除之前的节点
默认状态
这个表示master除了做持续集成和持续交付外,本身也要做构建,如果在上面创建的项目越来越多的时候,如果只在一台机器上建,会负载不了,一般情况下,都会把构建任务从master分离出来
重建创建vm5
主机
cd /var/lib/libvirt/images/
rm -f vm5
qemu-img create -f qcow2 -b small-new.qcow2 vm5
server5
yum install -y java-1.8.0-openjdk.x86_64
在jenkins新建节点,专门做构建的
如果不让master不工作的话,只需要将数量改为0就可以了
问题:如果gitlab的密码不知道了
cd /etc/gitlab
gitlab-ctl uninstall
gitlab-ctl cleanse
//rm -f initial_root_password
//gitlab-ctl reconfigure
find / -name *gitlab*
再重新部署gitlab
server4
cd /etc/yum.repos.d/
ls
scp docker.repo server5:/etc/yum.repos.d/
cd /etc/sysctl.d/
ls
scp docker.conf server5:/etc/sysctl.d/
cd /etc/docker/
scp -r certs.d/ daemon.json server5:/etc/docker/
server5
yum install -y docker-ce
sysctl --system
systemctl enable --now docker
vim /etc/hosts
172.25.0.1 server1 reg.westos.org
systemctl restart docker
docker info
docker pull nginx
新建用户
控制用户权限
新建的用户就没有权限了。
gitlab密码重新获得之后,新建项目
server2
git push -u origin main
之后刷新
问题:如果jenkins出现以下情况
是因为server3的公钥没有复制
server3
cd .ssh/
cat id_rsa.pub #将其中的内容复制到gitlab SSH中
先把docker_project_test 先禁用
如果test的控制台输出也出错了
可能是因为server5上没有安装git。
yum install -y git
把很多自由风格的项目串成流水线
构建主机时固定的,可以以下操作
server5
cd /tmp/workspace/
cd devops
ls
ssh-keygen
ssh-copy-id server4
如果构建主机不是固定的,
ssh-agent 帮你在这个里直接缓存你的凭据。
构建凭据
自动触发
高级
保存
jenkins结合钉钉报警
安装插件
创建一个报警群
在智能群助手中創建一個机器人,关键字jenkins,复制webhook地址,
测试上传失败
通过gitlab做版本控制
创建个项目
server2
vim Jenkinsfile #将之前的代码写到里面
git addJenkinsfile
git commit -m "add Jenkinsfile"
git push -u origin main
做修改
在master的设置中
集合ansible
在jenkins这台主机上安装ansible
rpm -ivh ansible-2.8.5-1.el7.noarch.rpm
yum install -y ansible-2.8.5-1.el7.noarch.rpm
有本地源则创建一个ansible源
cd /etc/yum.repos.d/
vim ansible.repo
yum install ansible
把四个包访问一个目录里,yum install *
ansible -v
cd /etc/ansible/
ls
cat ansible.cfg #主配置文件
cat hosts #对象
gitee
server2
git clone git@172.25.254.0.2:root/ansible.git
cd ansible/
ls
server4,5
systemctl stop docker
systemctl stop docker.socket
netstat -antlp
推ansible的play-book在server4,5
server4作为测试环境,5作为生产环境
jenkins会通过git方式从仓库中拉取下来,所有的信息都是放在仓库中,做任何变更都有版本控制的。
server2
vim ansible.cfg
mkdir inventory
cd inventory/
ls
vim test
[test]
172.25.0.4
vim prod
[prod]
172.25.0.5
cd ..
vim playbook.yml
---
- hosts:all
tasks:
- name: install httpd
yum:
name: httpd
state:present
- name: create index.html #创建模板
template:
src: index.html.j2
dest: /var/www/html/index.html
- name: start httpd
service:
name:httpd
state:started
enabled:yes
vim index.html.j2
{{ ansible_hostname }}
ls
git add .
git status -s
git commit -m "add playbook.yaml"
git push -u origin main
在jenkins拉取,新建项目
server3
cd /var/lib/jenkins/
cd workspace/
ls
如果是构建主机,比如是server5,构建的是/tmp/,那就在/tmp/下面
在ansible的主配置文件中,连接远程是要通过ssh
ssh devops@172.25.0.4 这个用户是在远程主机上创建的,然后通过sudo来运行,如果不做这个设置的话,会通过jenkins用户去访问,但这个是错的
server4,5
useradd devops
visudo
server4
passwd devops
设置用户密码
server5
echo westos | passwd --stdin devops
server3
su - jenkins
cat /etc/passwd
usermod -s /bin/bash jenkins
su - jenkins
ssh-keygen
ssh-copy-id devops@server4
ssh-copy-id devops@server5
ssh devops@server4 #测试
ssh devops@server5
ssh devops@172.25.0.4
ssh devops@172.25.0.5
然后退出来就行
ansible- playbook -i inventory/test playbook.yml