zoukankan      html  css  js  c++  java
  • ansible的安装与格式

    安装

    1 .下载epel源   使用epel源进行安装

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

    2 . 安装

    yum install -y ansible

    ansible 命令格式

    Usage: ansible <host-pattern> [options]
    -a MODULE_ARGS # 模块参数
    -C, --check #不做任何改变,但是会执行
    -f FORKS, --forks=FORKS # 用来指定并发
    --list-hosts  #列出主机列表
    -m MODULE_NAME #模块 名
    --syntax-check #语法检查
    -k, --ask-pass #输入密码

    ansible 底层是通过ssh来实现的

    ping 走的是ICMP协议

    ssh 生成密钥

    ssh-keygen   # 生成密钥对
    ssh-copy-id ip地址  # 将密钥对复制到远程机器

     

    hosts文件格式

    vi /etc/ansible/hosts 

    host-pattern 格式

    ansible-doc 查看模块的帮助信息

    ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
    -j json的方式返回模块内容
    -l 以列表的形式返回模块内容
     -s, --snippet 以片段式的方式显示模块的帮助信息
     # 直接显示模块的全部信息
     ansible-doc -l |wc -l 统计ansible提供的模块

    ping模块

    ansible 10.0.0.143 -m ping  # ping 单个主机地址
    ansible 10.0.0.143,10.0.0.144 -m ping  # ping 多个主机地址
    ansible all -m ping   # ping 所有的主机地址
    ansible web -m ping   # 根据hosts文件中的分组来ping
    ansible web,db -m ping  # ping 多个分组
    ansible "web:&db" -m ping   # ping 两个分组都存在的 ip
    ansible 'web:!db' -m ping     # ping  web 分组中db分组没有的ip
    ansible 'web:db'    # ping 两个分组所有的IP

    命令相关模块 -- command

    chdir # 切换目录
    creates # 如果存在,则不执行后面的命令
    removes # 如果存在,则执行后面的命令
    
    ansible web -a 'pwd'   # 给web组中的地址发送'pwd' 命令
    ansible web -a 'ls /tmp'  # 给web组中的地址发送 'ls /tmp' 命令
    ansible web -a 'creates=/tmp mdkir /data' #被忽略,因为/tmp存在
    ansible web -a 'creates=/tmp2 mkdir /data' #被执行,因为/tmp2目录不存在
    ansible web -a 'removes=/tmp2 mkdir /data2' #被忽略,因为/tmp2目录不存在
    ansible web -a 'removes=/tmp mkdir /data2' # 被执行,因为/tmp存在

    补充

    查看用户
    tail -1 /etc/passwd
    tail -1 /etc/shadow
    id zpf   # 查看zpf 用户的id
    echo '123' |passwd --stdin zpf  # 设置密码,不需要交互

    shell 模块

    ansible db -m shell -a 'echo "1234"|passwd --stdin zpf'   # 向db用户组中发送设置密码,前提用户组中的主机必须有zpf用户
    
    ansible 10.0.0.143 -m shell -a "bash a.sh" # 执行当前IP地址主机下的脚本
    ansible 10.0.0.143 -m shell -a "/root/a.sh"
    
    ansible 10.0.0.143 -m shell -a "/root/a.py" # 执行当前IP地址主机下的python脚本

    补充

    shell脚本 头部添加
    #!/bin/bash
    
    python 脚本头部添加
    #!/usr/bin/python
    # coding:utf8

    script 模块

    ansible db -m script -a "/root/b.sh" # 执行管控机器上的文件,给db 分组中的主机下发命令
    
    ansible web -m script -a "creates=/root/a.py /root/b.sh" # 判断被管控机器上的文件是否存在 ,如果存在,就跳过
    
    ansible web -m script -a "removes=/root/a.py /root/b.sh" # 判断被管控机器上的文件是否存在 ,如果存在,就执行

    copy 模块

    backup # 备份
    content # 内容
    dest # 目的地址
    group # 文件的属组
    mode #文件的权限  R 4 W 2 X 1
    owner # 文件的属主
    src #文件的源文件地址
    
    ansible web -m copy -a "dest=/tmp/f src=/etc/fstab" #复制单独文件到web组中主机的/tmp 下  以f 命名
    ansible web -m copy -a "src=/etc/init.d dest=/tmp"  #复制文件目录
    ansible web -m copy -a "src=/etc/init.d/ dest=/tmp" # 复制文件夹内的所有的文件
    ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex" # 复制文件并修改权限和属主
    ansible db -m copy -a "src=/etc/init.d dest=/tmp owner=alex" # 修改文件夹的权限或者属主属组时,文件夹内的所有文件的权限也会被修改
    
    # 修改文件 是通过MD5来做校验的
    
    ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex backup=yes" # 复制文件并将原来的文件做备份
    ansible db -m copy -a "dest=/tmp/c.txt content='大弦嘈嘈如急雨,小弦切切如私语'" # 直接往文件里面写入文件,是直接覆盖写入,慎用

    file 模块

    access_time # 创建时间
    group # 属组
    mode # 权限
    owner # 属主
    path # 文件的路径
    src # 源地址,只有在软连接和硬链接的时候才会使用
    state # directory 目录 touch 文件  link 软连接 hard 硬链接 absent 删除
    
    ansible db -m file -a "path=/zpf  state=directory" # 创建一个目录
    ansible db -m file -a "path=/root/zpf.txt state=touch" # 创建一个文件
    ansible db -m file -a "src=/root/q.txt path=/tmp/q state=link" # 创建软连接,源地址是本机上的文件地址
    ansible db -m file -a "path=/tmp/q state=absent" # 删除文件或者文件夹

    补充

    软连接  快捷方式          会跟源文件改变     ln -s 
    硬链接  硬盘的重复应用      会跟源文件改变    ln
    复制   复制了一份           不会跟源文件改变   cp

    fetch

    dest #目标地址
    src # 源地址
    ansible db -m fetch -a "dest=/tmp src=/var/log/cron" # 复制远程被管控机器的文件道管控机器上,以被管控机的ip为目录,并保留原来的目录结构
  • 相关阅读:
    重要网址
    线程同步与异步
    常量指针 和 指针常量
    权限设置
    COM组件技术
    抽象类与接口及其派生类的关系
    C++中 #pragma 的使用方法
    [原创].基于SyntaxHighlighter的Verilog HDL高亮组件
    [转载].图解SDRAM工作流程:仓库物语(高手进阶,终极内存技术指南——完整/进阶版)
    [笔记].原来Notepad++也有列模式
  • 原文地址:https://www.cnblogs.com/zpf666/p/10553074.html
Copyright © 2011-2022 走看看