当前位置:首页 > 操作系统 > Linux

Linux-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安装的所有模块
    

原文:https://www.cnblogs.com/sunxiuwen/p/10243594.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!