# 官方提供@yunTaoScripts Ansible 最佳实践 🔥🔥
# 安装ansible
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum install ansible -y
批量插入字符快捷键:
- Ctrl+v进入VISUAL BLOCK模式,按 j (向下选取列)或者 k (向上选取列),再按Shift + i 进入编辑模式然后输入你想要插入的字符(任意字符),再按两次Esc(这里不按两次Esc只会显示改了第一行)就可以实现批量插入字符,不仅仅实现批量注释而已。 批量删除字符快捷键:
- Ctrl+v进入VISUAL BLOCK模式,按 j (向下选取列)或者 k (向上选取列),直接(不用进入编辑模式)按 x 或者 d 就可以直接删去,再按Esc退出。
- 配置免密、配置文件、清单文件
vim ansible.cfg
vim hosts
ssh-keygen -N ""
ssh-copy-id ansible-node1
ssh-copy-id ansible-node2
加速ansible执行效率 (opens new window)
# 多playbook串行执行
[root@rhel8-81 task1]# cat a.yaml
---
- name: This is node1 playbook
hosts: node1
tasks:
- name: this is task1
debug:
msg: "hostname is {{ansible_fqdn}}"
- name: this is task2
debug:
msg: "hostIP is {{ansible_default_ipv4.address}}"
[root@rhel8-81 task1]# cat b.yaml
---
- name: This is node2 playbook
hosts: node2
tasks:
- name: this is task1
debug:
msg: "hostname is {{ansible_fqdn}}"
- name: this is task2
debug:
msg: "hostIP is {{ansible_default_ipv4.address}}"
[root@rhel8-81 task1]# cat all.yaml
---
- name: This is a.yaml
import_playbook: a.yaml
- name: This is b.yaml
import_playbook: b.yaml
[root@rhel8-81 task1]# ansible-playbook all.yaml
# 容器方式部署gitlab
- 安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3 # 可以不做
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
- 安装gitlab
[root@rhel8-81 task1]# docker load -i gitlab.tar
[root@rhel8-81 task1]# mkdir /gitlab
[root@rhel8-81 gitlab]# chmod -R 777 /gitlab
[root@rhel8-81 task1]# cd /gitlab/
[root@rhel8-81 gitlab]# mkdir etc data log
[root@rhel8-81 gitlab]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 19 22:01 data
drwxr-xr-x. 2 root root 6 Dec 19 22:01 etc
drwxr-xr-x. 2 root root 6 Dec 19 22:01 log
[root@rhel8-81 gitlab]# docker history beginor/gitlab-ce --no-trunc --format {{.CreatedBy}} | egrep -i 'volume|expose'
/bin/sh -c #(nop) VOLUME [/etc/gitlab /var/opt/gitlab /var/log/gitlab]
/bin/sh -c #(nop) EXPOSE 22/tcp 443/tcp 80/tcp
[root@rhel8-81 gitlab]# docker run --name MyGitlab -dit -p 222:22 -p 8080:80 -v /gitlab/etc:/etc/gitlab -v /gitlab/data:/var/opt/gitlab -v /gitlab/log:/var/log/gitlab beginor/gitlab-ce
3aea40c2a8c9a8d24a29c922d09243e9e5f38ca403ef6ece9cc14a82aa774fdf
- 修改gitlab 配置信息
[root@rhel8-81 gitlab]# egrep '81|ssh_port' /gitlab/etc/gitlab.rb
external_url 'http://192.168.3.81'
gitlab_rails['gitlab_ssh_host'] = '192.168.3.81'
gitlab_rails['gitlab_shell_ssh_port'] = 222
空文件夹无法提交。
- 查看基本信息
[root@rhel8-81 ansible]# git config --list
[root@rhel8-81 ansible]# cat .git/config
# 使用清单文件
# 指定清单文件
[root@rhel8-81 task2]# ansible -i hosts.bak xyt -m ping
rhel8-82 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
rhel8-83 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
# 包含主机组
[root@rhel8-81 task2]# ansible -i hosts.bak zz --list-hosts
hosts (4):
rhel8-84
rhel8-85
rhel8-86
rhel8-87
[root@rhel8-81 task2]# cat hosts.bak
[xyt]
rhel8-84
rhel8-85
[abc]
rhel8-86
rhel8-87
[zz:children]
xyt
abc
# 变量优先级
- 在 xyt 主机组的 的主机 会应用 group_vars 文件夹下的配置。
[root@rhel8-81 task2]# mkdir group_vars/xyt
[root@rhel8-81 task2]# pwd
/root/ansible/task2
[root@rhel8-81 task2]# ls | grep group_vars/xyt/main.yaml
优先级顺序 role_var > playbook_var > group_vars(如果节点在 主机组中,否则使用 default_vars)> default_vars