自动化运维-ansible入门篇

时间:2022-01-30 02:04:22

1.ansible配置

什么是Ansible
  • IT自动化工具
  • 依赖于现有的操作系统凭证来访问控制远程机器
  • 简单易用、安全可靠

Ansible可以完成哪些任务

  • 配置系统
  • 开发软件
  • 编排高级的IT任务

Ansible特点

  • 轻量级
  • 易学习
  • 操作灵活
Ansible执行流程

![image-20190828152118020](/Users/mac/Library/Application Support/typora-user-images/image-20190828152118020.png)

![image-20190828152147492](/Users/mac/Library/Application Support/typora-user-images/image-20190828152147492.png)

Ansible安装配置

Ansible安装方式

  • python pip
  • 软件源
  • Ansible源码

python pip安装

  • sudo pip install ansible

优点

  • 简单、快速、跨平台

软件源安装

  • sudo yum install peel-release && sudo yum install ansible

优点

  • 简单、快捷、跨平台

软件源安装(ubuntu)

  • $ sudo apt-get install software-properties-common
  • $ sudo apt-add-repository spa:ansible/ansible
  • $ sudo apt-get update
  • $ sudo apt-get install ansible

优点

  • 不会出现编译或者依赖问题

Ansible配置

  • host配置

    host文件: /etc/ansible/hosts

  • 配置内容:

    [test]

    192.168.1.1

配置远程登录

  • 添加公钥:

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.1

连通测试

  • 运行Ansible命令:

    ansible all -m ping

  • 正确的运行结果:

    192.168.1.1 | SUCCESS => {

    ​ "changed": false,

    ​ "ping": "pong"

    }

2.Ansible基本使用

Ad-hoc是什么
  • 命令行工具
  • 适用于业务变更
  • 所见即所得

Ad-hoc怎么用

举例说明:

  • 列出目标主机目录

    ansible test -m shell -a "ls /root" --user=root
    
    

Ansible help message

  • 普通可选参数
  • 链接目标主机相关参数
  • 权限控制相关参数
Ansible Inventory

Inventory是什么

  • 定义主机关系的文件
  • 默认路径为/etc/ansible/hosts
  • 文件内容格式为ini

Inventory主机组

[组名]
192.168.1.1
192.168.1.2

Inventory主机别名

jumper ansible_ssh_port = 22
ansible_ssh_host = 192.168.1.1

Inventory链接参数

ansible_ssh_host
#将要连接的远程主机名,与你想要设定的主机别名不同的话,可通过此变量设置 ansible_ssh_port
#ssh端口号,如果不是默认的端口号,通过此变量设置 ansible_ssh_user
#默认的ssh用户吗 ansible_ssh_pass
#ssh密码(这种方式并不安全,我们强烈建议使用 --ask-pass或SSH) ansible_sudo_pass
#sudo密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)
Inventory批量主机组
[websevers]
www[01:50].example.com
[databases]
db-[a:f].example.com
Ansible基本使用
  • 了解Ansible使用
  • 了解Ansible模块查找使用方法

实战

  • 安装mysql

    ansible test -m yum -a "name=mariadb-server state=latest"
    #安装使用yum模块 name参数是必须的,服务名称, state参数是可选的,latest表示安装
  • 启动服务/暂停服务

    ansible test -m systemd -a "name=mariadb state=started"
    #启动mariadb服务
    ansible test -m systemd -a "name=mariadb state=stopped"
    #关闭mariadb服务
  • 查看mysql服务是否启动

    ansible test -m shell -a "ps -ef|grep mysql"