头图

自动化运维工具-ansible的简单使用

小灰灰

ansible是用来对批量机器执行命令的工具;

准备环境:
控制机器:192.168.182.102
业务主机:192.168.182.100,192.168.182.101

ansible安装与配置

  1. yum install epel-release ansible -y
  2. 配置需要执行命令的主机,vim /etc/ansible/hosts
    默认是没有任何主机的,可以按标签添加主机,如图所示,我添加了test1标签和test2标签
    image.png
  3. 接下来需要配置主机的密码

    ssh-keygen -t rsa

    默认密钥是会生成密码的,为了记住密码,需要执行以下命令,~/.ssh/id_rsa是你生成密钥时的默认文件路径;

    ssh-agent bash
    ssh-add ~/.ssh/id_rsa
  4. 将公钥复制到业务主机上,执行如下命令

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

    可以在业务主机的~/.ssh/authorized_keys下看到添加的公钥

  5. ansible的配置存放于/etc/ansible/ansible.cfg,介绍两个比较常用的配置

    # 每次执行ansible命令是否校验ssh host key
    host_key_checking = False
    # 开启日志记录
    log_path = /var/log/ansible.log
  6. 执行ansible命令,格式为:
    ansible 主机或者主机组 -m 模式 -a 参数
    例如执行一个ping命令
    image.png

主机组就是在/etc/ansible/hosts文件的配置,例如指定test1的主机组

ansible test1 -m ping

image.png

貌似只支持单个tag或者all,all就是包含所有的tag
ansible all -m ping
image.png

常用的module

具体的module有哪些,这里只会介绍命令的用法,不会介绍他们的区别,如果想要了解真正的原理,建议查看文档或者源码,文档可以通过ansible-doc module-name查看,源码在/usr/lib/python2.7/site-packages/ansible/modules

  1. shell(win_shell)
    执行一条shell命令,具体是调用了/bin/sh
    image.png
  2. command(win_command),看文档貌似不支持部分字符,用法与shell类似,由于不支持“|”字符,所以不支持管道操作
    image.png
  3. copy,复制文件到业务主机上
    image.png
  4. file, 与文件相关的操作,删除刚刚复制的文件
    image.png
  5. script, 相当于将脚本复制到业务机上,执行该脚本,然后删除该脚本,即使该脚本没有执行权限,仍然会执行该脚本
    image.png

ansible-playbook

将任务写入到yml文件中,进行批量任务操作;实例如下

- hosts: all
  tasks:
    - name: create test3 file
      file: path=/opt/test3.txt state=touch
      when: GO111MODULE == "on"
    - name: create test2 file
      file: path=/opt/test2.txt state=touch
      when: GO111MODULE == "off"
      notify:
        - create test3 file

hosts:是需要执行的任务的主机组
tasks:执行的任务列表
每个任务有如下参数:
name:任务的名称
上图中的file: path=/opt/test3.txt state=touch 表示module name为file,参数为path=/opt/test3.txt state=touch的任务,可以替换为任何其他的module name和参数
when:if判断,只有返回false的才会执行该任务,但是貌似只支持ansible自己有的变量
notify: 当任务状态为change时会触发notify,并执行相应的task

阅读 71

想要成为大佬的菜鸡

1 声望
0 粉丝
0 条评论
你知道吗?

想要成为大佬的菜鸡

1 声望
0 粉丝
宣传栏