• 自动化运维工具Ansible工具学习及使用---持续更新中


    简介:Ansible是一款基于python开发的自动化运维工具,轻量化且功能强大。功能节点可以分为控制节点(管理节点)及被管理节点。在控制节点上,Ansible可以通过SSH、PowerShell等方式实现远程管理其它节点设备,所有操作都只需要在控制节点上执行,不需要数据库及守护进程。本文主要对Ansible部分模块应用进行示例,Ansible其它特点不在此阐述。

    Ansible 官方地址https://docs.ansible.com/ansible/latest/

    Ansible 控制节点要求:  已安装 Python 3.8 或更新的版本

    下面我们使用测试环境来部署及使用ansible的各个模块及功能

    测试环境信息:

    HostnameAddressOS versionMarks
    test0110.172.56.38Ubuntu 22.04Controller
    test0210.172.58.43Ubuntu 22.04node
    test0310.172.56.46CentOS 7.9 node
    test0410.172.58.67CentOS 7.9 node

    Ubuntu22.04安装部署控制节点:

    1. 安装ansible套件

     sudo apt-get install software-properties-common

    2. 添加ansible源

     sudo apt-add-repository ppa:ansible/ansible

    3. 更新源

     sudo apt-get update

    4.安装ansible及sshpass工具

     sudo apt-get install ansible sshpass

    5. 创建ssh-key

     6. 拷贝公钥到3台被管理节点

    ssh-copy-id  -i ~/.ssh/id_rsa.pub -p 22 root@10.172.58.43

    Ansible相关工作目录及文件:

    /etc/ansible/                ansible配置目录

    /etc/ansible/ansible.cfg        主配置文件

    /etc/ansible/hosts      主机目录文件

    /var/log/ansible.log      日志文件

    /usr/share/my_modules      库文件目录

    Ansible.cfg主配置文件内容

    官方内容参考: https://github.com/ansible/ansible/blob/stable-2.9/examples/ansible.cfg

    一般保持默认即可

    Ansible命令格式:

    ansible +被管理主机  +模块  +参数

    例如:ansible all -m ping -v    表示对hosts里所有主机执行ping模块,并显示执行过程

    如下图所示:

    '

    "all" 代表在/etc/ansible/hosts中定义的所有主机清单,

    我的主机清单如下:

    以上这种ad-hoc模式一般用于查看远程节点信息或文件使用。

    如果需要用于执行复杂任务或一个任务需要调用多个模块的一般使用playbook模式

     

    Ansible Roles的使用:

    roles是ansible里面重要的一个内容,我们可以在/etc/ansible/工作目录下创建roles目录,可以按照项目来定义role,也可以通过功能来定义role,目录结构如下图: 

      我们根据需求创建目录,后面用于同步系统配置文件及部署ldap及zabbix客户端

    mkdir -pv {system,ldap,zabbix}/{files,templates,tasks,handlers,vars,meta,defaults}

    另外,也可以用ansible-galaxy程序来生成完整的roles目录,命令如下:

    ansible-galaxy init zabbix roles

    /defaults: 角色默认的变量目录

    /files: 存放文件目录  用于模块直接调用

    /templates: 存放模板的目录 文件格式需以j2结尾,

    /tasks:  任务存放目录, 与handlers配合使用

    /handlers:  触发任务目录,只有在tasks中的任务被执行且被通知的情况下才会执行handlers目录下的任务

    /vars:  其它变量存放目录,可被task调用

    /meta:依赖关系目录 ,可定义角色的依赖关系

    创建playbook来调用roles  (注意:在写yml文件时需要注意缩进)

    在/etc/ansible/目录下创建一个playbook-install.yml来调用roles(zabbix和ldap)

    1. - name: zabbix_install
    2. hosts: k8s,coreservice
    3. roles:
    4. - zabbix

    以上hosts可以写主机组,也可以直接写节点

    我们进入/etc/ansible/roles/zabbix/tasks/目录下继续编写main.yml, 在main.yml文件中我们并没有直接写具体的模块,而是在这里做一个判断来区分不同节点的客户端执行不同的task。

    当被管理机器系统为ubuntu时,则执行ubuntu.yml。

    当被管理机器系统为centos时,则执行centos.yml。

    1. - include_tasks: ubuntu.yml
    2. when: ansible_distribution == "Ubuntu"
    3. - include_tasks: centos.yml
    4. when: ansible_distribution == "CentOS"

    上面我们通过不同的系统来执行不同的task, 我们在tasks目录下继续创建ubuntu.yml及centos.yml

    centos.yml内容如下:

    1. - name: copy rpm souce to agent
    2. copy:
    3. src: zabbix.repo
    4. dest: /etc/yum.repos.d/
    5. - name: clean up
    6. command: yum clean all
    7. - name: install the zabbix-agent2
    8. yum:
    9. name: zabbix-agent2
    10. state: present
    11. - name: config the zabbix_agent2.conf
    12. template:
    13. src: zabbix_agent2.conf.j2
    14. dest: /etc/zabbix/zabbix_agent2.conf
    15. - name: start zabbix-agent
    16. service:
    17. name: zabbix-agent2
    18. state: started
    19. enabled: true

    ubuntu.yml内容如下:

    1. - name: get the zabbix-agent2
    2. copy:
    3. src: zabbix.list
    4. dest: /etc/apt/sources.list.d/
    5. - name: install the zabbix-agent2
    6. apt:
    7. name: zabbix-agent2
    8. state: present
    9. - name: copy the zabbix_agent2.conf
    10. template:
    11. src: zabbix_agent2.conf.j2
    12. dest: /etc/zabbix/zabbix_agent2.conf
    13. when: ansible_hostname != 'test01'
    14. - name: start zabbix-agent
    15. service:
    16. name: zabbix-agent2
    17. state: started
    18. enabled: true

    内容持续更新中.....

     

  • 相关阅读:
    tomcat服务搭建(多实例部署和Nginx+Tomcat负载均衡、动静分离)
    回归与聚类算法系列⑤:逻辑回归
    字节地址的分配和输出
    手把手教你配置vscode+wsl开发环境
    2013-2020年全国31省数字经济信息化基础数据
    (Research)高分辨率单细胞图谱揭示非小细胞肺癌组织驻留中性粒细胞的多样性和可塑性
    蓝桥杯每日一题2023.10.17
    会话管理——Cookie和 Session
    Eclipse 内容辅助
    MySQL中的死锁预防和解决
  • 原文地址:https://blog.csdn.net/d27liu/article/details/126760869