zoukankan      html  css  js  c++  java
  • ansible代码发布系统的配置入门

    ansible属于第三方库,可以通过配置阿里云的镜像实现快速下载安装,它在阿里云的epel模型仓库下

    在配置阿里源时,为确保正常安装,一定要清空缓存 :sudo yum clean all

    再执行生成元缓存:sudo yum makecache .

    元仓库缓存生成后,就可以安装ansible了:sudo yum install ansible

    ***********************************************************************

    通常情况下,登录客户端会采用ssh秘钥登录的方式,不建议直接使用密码

    可以通过代码自动生成ssh秘钥:ssh-keygen

    本质上就是:A作为主机,将自己生成的ssh秘钥(公钥)发送给希望被控制,实现登陆的子机

    ssh-copy-id 192.168.1.23(此处是子机ip)

    ansible中的命令格式:  ansible <host-pattern> [options]

    ----------------------------------------------------------------------------

    -a        #模块的参数

    -C          #检查

    -f         #用于处理高并发

    --list hosts    #列出主机列表

    -m        #模块名称

    --syntax-check  #语法检查

    ------------------------------------------------------------------------------

    查看ansible生成的文件:rpm --ql ansible

    关于ansible的主机配置信息目录:/etc/ansible/hosts    可以用vi 或者vim编辑器查看:vim /etc/ansible/hosts

    用ansible中的ping去测试机器是否在线:ansible 192.168.1.23 -m ping

    查看是否存在用户 :
    tail -l /etc/passwd
    tail -l /etc/shadow
    id kevin
    给用户设置密码:
    echo ‘123456’| passwd --stdin kevin
    批量创建密码:
    ansible web(web是当前机器所在组) -m shell -a 'echo "123456"| passwd --stdin kevin '
    执行远程文件方式:
    ansible 192.169.1.122 -m shell -a 'bash a.sh'
    ansible 192.169.1.122 -m shell -a '/root/a.sh' (但文件必须具有可执行权限)
    ansible 192.169.1.122 -m shell -a '/root/a.py' 可用于执行远端的Python脚本

    ansible web -m script -a '/root/m.sh' 执行本地的文件 管控机上的文件
    ansible web -m script -a 'removes=/root/m.sh /root/m.sh' 判断被控机上是否存在该文件,存在就移除,不存在则不执行
    ansible web -m script -a 'creates=/root/m.sh /root/m.sh' 判断被控机上是否已存在该文件,不存在则创建,存在则不处理

    -----------------------------------------------------------------------------------

    copy模块

    backup 备份
    dest 目的地址
    group 文件的属组
    mode 文件的权限 r 4 w 2 x 1
    owner 文件的属主
    src 源文件
    checksum 通过md5码判断文件是否需要复制
    ansible db -m copy -a 'src=/root/m.sh dest=/tmp/a.sh' 复制本地文件到远程主机
    ansible db -m copy -a 'src=/root/m.sh dest=/tmp/a.sh mode=755' 拷贝文件到远程主机并指定文件的权限
    ansible web -m copy -a 'src=/root/m.sh dest=/tmp/a.sh mode=755 owner=kevin' 远程推送文件 指定文件权限 并修改属主
    ansible web -m copy -a 'src=/etc/init.d dest=/tmp/ mode=755 owner=kevin' 复制本地目录到远程主机
    ansible web -m copy -a 'src=/etc/init.d/ dest=/tmp/ mode=755 owner=kevin' 复制本地目录中的文件到远程主机
    ansible web -m copy -a 'content='我的一次生最美好的场景,就是遇见你 dest=/tmp/a.txt'' 将文本内容注入远程主机文件中

    ---------------------------------------------------------------------------------------

    file模块:
    inode 硬盘的地址
    id 获取的是内存的地址
    ln -s a.py b.py 创建文件a.py的软链接
    ln a.py c.py 创建a.py的硬链接
    当源文件发生变化时,软链接和硬链接都会发生变化
    ansible db -m file -a 'path=/hello state=directory' 在远程机器上创建文件夹
    ansible db -m file -a 'path=/root/a.txt state=touch' 在远程机器上创建文件
    ansible db -m file -a 'path=/tmp/f src=/etc/fstab state=link' 创建软链接 path是目标地址 src是源地址
    ansible db -m file -a 'path=/tmp/f state=absent ' 删除文件或者文件夹

    ----------------------------------------------------------------------------------

    fetch模块
    ansible web -m fetch -a 'src=/var/log/cron dest=/tmp' src是源地址 dest 是目标地址下载被控节点中的文件
    每台机器会创建一个文件夹,目录结构不会改变

    ***********************************************************************

    查看yum的安装包组:yum group list

    安装yum包组 :yum groupinstall

    disablerepo  :禁用repo源

    enablerepo :启用repo源

    name 包名

    state install 安装状态

    remove (absent)卸载

    ansible web -m yum -a 'name=wget '          安装wget

    ansible web -m yum -a 'name=wget state=absent'     卸载wget

     ------------------------------------------------------------------------------------------------

    pip install 安装包

    pip freeze >a.txt   将Python的环境打包到a.txt文件中汇总  就有了环境名称和版本号

    pip install -r a.txt  安装文件中的包

    pip list  查看所有的已安装成功的包

    ansible web  -m yum -a 'name=nginx'  安装指定的环境

    ---------------------------------------------------------------------------------------

    service模块:

    ps -ef |grep nginx   查看进程信息

    ss -tnlp  查看端口信息

    systemctl start nginx  centOS7启动nginx的命令

    service nginx start     centOS6启动nginx的命令

    systemctl enabled nginx centOS7  开机自启动nginx

    chkconfig nginx on   centOS6开机自启动nginx

    ansible web -m service -a 'name=nginx state=started'    启动nginx

    ansible web -m service -a 'name=nginx state=stopped'            关闭nginx

    -------------------------------------------------------------------------------------------

    cron计划任务模块:

    *  *  *  *  *  job  (分时日月周 任务)

    crontab -e  编辑计划任务

    crontab -l  查看计划任务

    crontab -r  删除计划任务

    minute 分钟

    hour 小时

    day 天

    month 月

    weekday  周

    name  任务名

    disabled 禁用  

    ansible db -m cron -a 'minute=24 job="touch /tmp/a.txt" name=touchfile'  创建一个计划任务

    ansible db -m cron -a 'name=touchfile state=absent'     删除一个计划任务

    ansible db -m cron -a 'minute=24 job="touch/tmp/a.txt" name=touchfile disabled=yes'  禁用计划任务 

    ----------------------------------------------------------------------------------------

    用户相关:

    管理员 root   0

    普通用户

      系统用户 不能登录 占用端口1-999 (centos7)   1-499(centos6)

      登录用户 可以登录 占用端口1000-65535     500-65535

    -d 指定用户家目录

    -g 指定用户组

    -G 指定用户的附加组

    -s 指定登录后的shell

    -r 创建一个系统组

    useradd -r kevin 创建一个系统用户 倒序从999开始

    useradd -s /sbin/nologin kevin   创建普通用户从1000开始

    useradd -d /opy/kevin kevin    创建用户时指定用户的家目录

    useradd -u 3000 lisa   创建用户 并指定其ID

    userdel kevin    删除用户  但其家目录会保留

    userdel -r kevin   删除用户 节目录也删除

    groupadd Kevin  创建用户组

    groupdel Kevin  删除用户组

    -------------------------------------------------------------------------------------

    user模块:

    group 

    groups 附加组

    home 家目录

    name  用户名

    password 密码

    remove 

    shell 用户登录后使用的shell

    system 创建一个系统用户

    uid 用来指定用户的ID

    state 状态

    ansible db -m user -a 'name=lisa uid=4000 home=/opt/lisa groups=root shell=/sbin/nologin'

    #创建一个用户,指定用户的名字Lisa 端口号4000 家目录 附加组 shell操作为不可登录用户

    ansible db -m user -a 'name=lisa state=absent'  删除指定用户,但会保留家目录

    ansible db -m user -a 'name=lisa state=absent remove=yes'  删除指定用户 并移除家目录

    ---------------------------------------------------------------------------------

    group模块:

    gid 组的id

    name 组的名字

    system 系统组

    state 状态

    ansible db -m group -a 'name=lisa system=yes'  创建系统组

    ansible db -m group -a 'name=lisa state=absent'   删除系统组

  • 相关阅读:
    [Swift]LeetCode380. 常数时间插入、删除和获取随机元素 | Insert Delete GetRandom O(1)
    [Swift]LeetCode378. 有序矩阵中第K小的元素 | Kth Smallest Element in a Sorted Matrix
    说说心声------ 一些经历
    安装eclipse maven插件m2eclipse No repository found containing
    苹果浏览器实战(三)
    CSDN挑战编程——《绝对值最小》
    高可用技术工具包 High Availability Toolkit
    jstl 标签 循环 序号
    坚向的ViewPager,上下滑动的组件,android上下滑动 VerticalPager
    Php socket数据编码
  • 原文地址:https://www.cnblogs.com/wen-kang/p/10903005.html
Copyright © 2011-2022 走看看