# 官方提供@yunTaoScripts Ansible 最佳实践 🔥🔥

loading

# 安装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

最后修改时间: 12/31/2022, 12:00:03 PM