• Linux-ansible


    目的

    ansible官方文档

    项目:代码发布系统

    实现功能: 发布代码

    前戏

    • ansible
    • openpyxl
    • 项目的开发

    ansible

    python开发的一款开源工具

    批量到执行远程主机命令

    安装

    yum install ansible -y

    查看ansible生成的文件

    rpm -ql ansible
    

    查看ansible生成的命令

    ansible  # 用来执行ansible的一些命令
    ansible-doc #用来查看ansible的模块的帮助信息
    ansible-playbook #用来执行playbook
    ansible-galaxy #用来下载第三方的playbook
    

    操作都是幂等的

    ansible 命令格式

    ansible <host-pattern> [options]
    -a MODULE_ARGS #模块的参数
    -C, --check #测试,干跑
    -f FORKS #指定并发数
    --list-hosts #列出host-pattern主机
    --syntax-check  #语法检查
    -m MODULE_NAME, #指定模块
    
    
    

    生成公钥私钥

    ssh-keygen
    

    复制公钥到远程主机

    ssh-copy-id 192.168.19.9
    

    ping 命令走icmp协议

    ansible 第一个命令

    ansible all -m ping #跟系统自带的ping不一样
    

    host-pattern 格式

    • [web]
      192.168.19.9
      192.168.19.26
      [db]
      192.168.19.26
      192.168.19.37
      [cache]
      192.168.19.37
    • www[001:006].example.com
    • 指定所有 all
    • 指定单台机器(指定多个机器)
    • 指定分组(多个分组)
    • 指定分组并集 # ansible 'web:db' -m ping
    • 指定分组的交集 # ansible 'web:&db' -m ping
    • 指定分组的差集 #ansible 'web:!db' -m ping

    命令相关

    command

    ansible web -m command -a 'pwd'
    ansible web -a 'chdir=/tmp pwd' #切换到/tmp并执行pwd
    ansible web -a 'creates=/etc/  mkdir /data2' #判断creates是否存在,真就忽略后面的操作
    ansible web -a 'removes=/tmp/data  mkdir /tmp/data2' #判断removes是否存在,假就忽略后面的操作
    

    补充

    tail -1 /etc/shadow 查看最后一个用户
    echo 'test1'|passwd --stdin test1 设置用户密码,不需要二次确认
    
    

    ansible-doc

    Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
    -a #列出所有的模块
    -l #列出ansible的模块
    -s #片段式显示模块的信息
    # 列出模块的详细信息
    

    shell

    ansible web -m shell -a 'echo "test1"|passwd --stdin test1' #修改密码
    ansible 192.168.19.9 -m shell -a '/root/a.sh' #指定远程主机上的shell脚本
    ansible 192.168.19.9 -m shell -a '/root/a.py' #指定远程主机上的python文件
    
    

    sctipt

    ansible all -m script -a '/root/a.sh'  #执行管控机上的shell脚本
    

    文件相关的 命令

    copy 复制管控机文件到被管控机

    ansible web -m copy -a 'src=/etc/fstab dest=/data/fst' #src指定源文件 dest指定目标文件
     ansible web -m copy -a 'src=/etc/fstab dest=/data/fst backup=yes' #backup备份
     ansible web -m copy -a 'src=/etc/init.d dest=/data/' #复制目录和目录下的文件到远程主机,远程主机也是一个文件夹
     ansible web -m copy -a 'src=/etc/init.d/ dest=/data/' #复制目录下的文件
     ansible web -m copy -a 'src=/etc/fstab dest=/data/fst backup=yes  mode=600' #mode 指定权限,owner指定文件的属主,group用来指定属组
    

    file

    ansible db -m  file -a 'path=/data10 state=directory' #path指定地址,state=directory表示创建文件夹
    ansible db -m  file -a 'path=/data10/test1 state=touch' #state=touch 表示创建新文件
    ansible db -m  file -a 'path=/data10/test10 src=/data10/test1 state=link' #src表示源文件,path是不是目标,state=link是不是创建一个软连接
    ansible db -m  file -a 'path=/data10/test1 state=absent' #state=absent 代表删除
    

    补充

    ln 创建硬链接 链接文件变更,源文件不变
    ln -s 创建软连接 链接文件变更,源文件变
    

    fetch

    ansible db -m fetch -a 'src=/etc/fstab dest=/tmp' #src源地址(在被控机器上),dest目标地址(管控机上的地址)每个管控机的文件都生成了一个目录,会保持文件的原来目录结构
    

    软件相关

    补充

    [name]   #分组
    name=CentOS-$releasever - Base - mirrors.aliyun.com  #这个分组的名字
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ #分组的url,叫baseurl
            http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
    gpgcheck=0 # gpgcheck=1需要验证key文件,gpgcheck=0不验证key
    enabled=1 #enabled=1 表示分组可用,enabled=0表示分组是不可用的
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #key文件
    
    

    yum

    ansible web -m yum -a 'name=nginx state=installed' # 安装nginx
    ansible web -m shell -a 'rpm -qa|grep nginx' #查看nginx是不是安装成功
    ansible web -m yum -a 'name=nginx state=absent'  #卸载nginx
    

    pip

    ansible web -m pip -a 'name=Django==1.11.15' # 安装django
    

    补充

    pip freeze  > file #给当前的python模块做快照
    pip install [options] -r <requirements file>  安装
    pip list #查看当前python安装的所有模块
    
  • 相关阅读:
    有高程点数据,想生成等高线数据后再生成TIN
    【转】ArcGIS Server安装
    CSS定义不规则图片排版
    ArcEngine实现打开shapfile、Raster、TIN文件
    VSS在签出工程时老提示"network not found"或者''Invalid handle"的解决办法
    SiteServer CMS 上传文件过滤,只能是图片格式。
    突然记起我也遇到过一个麻花姐
    六一快乐
    杭州,婺源
    <转>一斗米养个仇人
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/10243594.html
Copyright © 2020-2023  润新知