Your browser does not support the Canvas element.

ansible

一、安装

  1、安装wget

    yum install -y wget

  2、下载epel源  

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  3、下载安装ansible

    yum install -y ansible

二、ansible 的命令格式

  ansible -h 查看 ansible的参数

  -a  MODULE_ARGS  模块参数

  -C  --check  检查语法

  -f  FORKS  并发

  --list-hosts  列出主机列表

  -m  MODULE_NAME  模块名字

三、ssh 认证方式

  -  密码认证

  -  密钥认证

  ssh-keygen  生成密钥对(公钥,私钥)

  ssh-copy-id + 远程主机地址  复制公钥到远程主机

四、基本命令

  ping 走的 是ICMP协议

  ansible 中的ping 走的是ssh协议,所以当你ssh没有连接成功时,是无法ping通的,会报如下警告

  

  此时需要在 /etc/ansible/hosts文件下将被控制主机的ip地址写进去

  

  再 ping,成功 

  

  还可以将远程主机ip写入一个自定义组里边,一台主机可以作为多个组的成员。

  

  此时直接ping 组名也能ping通

  anans

  ansible all -m ping  ping所有远程主机

  ansible 'web:!db' -m ping  在web组 中 但是不再db组中的远程主机

  ansible 'web:&db' -m ping  web 和 db 的交集

  ansible'web:db' -m ping  web 和 db 的并集 

  4.1   command

    ansible web -a 'ls'  # 查看当前组下的所有文件ansi
    ansible web -a 'chdir=/tmp pwd' # 先切换目录,在执行相应的命令,一般情况下在编译时候使用
    ansible web -a 'creates=/tmp pwd' # 如果creates的文件存在,则不执行后面的操作
    ansible web -a 'removes=/tmp pwd' # 如果removes的文件存在,则执行后面的操作
    ansible web -a 'removes=/tmp mkdir /data' # 会执行后面的mkdir命令
    ansible web -a 'creates=/data2 mkdir /data2' #会执行后面的mkdir命令

   

    ansible web -m command -a 'useradd haha'  # 创建一个haha的用户

    查看用户是否被创建成功
    tail -1 /etc/passwd
    tail -1 /etc/shadow
    id + 用户名

  4.2  shell
    ansible web -m shell -a echo '1' | passwd --stdin alex 非交互式设置密码  给haha 用户设置一个密码为1

    这里不能用command ,因为command 不支持 < ,> , | , &, $ 这些特殊字符,如果遇到了使用shell

     要先确保改主机中有这个文件

    ansible 192.168.12.25 -m shell -a '/root/a.sh' 执行shell脚本,前提是脚本有可执行权限

    chmod +x a.sh  给a.sh文件添加可执行权限
    ansible 192.168.12.25 -m shell -a '/root/a.py' 执行python脚本,前提是脚本有可执行权限

   4.3 script

    ansible web -m script -a '/root/m.sh'  执行管控机上的m.sh文件,将脚本文件的命令运行在web组下的被掌控机上。

    ansible web -m script -a 'creates=/root/a.sh /root/m.sh'  查看被掌控机上的文件是否存在  ,查看被掌控机上是否有a.sh文件,存在就不执行。

  4.4 copy

    dest  目标地址

    src  源地址

    ansible web -m copy -a 'dest=/tmp/a.sh  src=/root/'  复制文件到远程主机,将a.sh文件 复制到 web组下的所有被掌控机的root下

    ansible web -m copy  -a 'dest=/tmp/a.sh  src=/root/m.sh'

 

posted @ 2019-02-14 16:32  一根小菜  阅读(553)  评论(0编辑  收藏  举报
Your browser does not support the Canvas element.