zoukankan      html  css  js  c++  java
  • ansible(二)

    一.软件相关模块

    1.yum(下载包)

    正常操作
    yum 与rpm的区别
    yum可以解决依赖关系
    rpm 全称readhat package manager(红帽包管理工具),需要自己解决依赖
    yum源配置

    查看yum源配置

    cat /etc/yum.repos.d/epel.repo
    [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch  #名字
    baseurl=http://mirrors.aliyun.com/epel/7/$basearch  #rpm源的地址,后面可以写http,https,ftp,Samba,file:
    failovermethod=priority
    enabled=1 # 是否开启,1代表开启,0表示关闭
    gpgcheck=0  #是否校验签名,1代表校验,0表示校验(校验安全性)
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    yum安装一个包
    yum install -y nginx
    yum安装一个包组

    注:一个包组中有一类功能对于各个软件的处理

    yum grouplist #查看包组信息
    yum groupinstall 包组名 #安装包组
    ansible提供的yum模块
    (1)yum模块的参数

    disablerepo #禁用源
    enablerepo #启用源
    name #包名
    static #状态,包括安装和卸载
    (2)远程在web组的被管控机上下载wget包
    ansible web -m yum -a 'name=wget'
    (3)将yum源发送到管控机(使用镜像源下载更快,有的包在yum源中),下载安装pip包
    ansible web -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo'
    ansible web -m yum -a 'name=python2-pip' #下载安装pip包
    (4)远程卸载wget包
    ansible web -m yum -a 'name=wget state=absent'
    (5)远程安装包组,@代表包组
    ansible web -m yum -a 'name="@Development Tools"'

     

    2.pip(下载yum中没有的包)

    正常操作
    将代码的环境依赖打包到文件中
    pip freeze > a.txt
    安装依赖
    pip install -r a.txt
    安装单个包
    pip install 包名
    查看安装了哪些包
    pip list
    ansible提供的pip模块
    (1)pip模块的参数

    (2)安装flask
    ansible web -m pip -a 'name=flask'
    requirements #安装电脑上的所有

     

    3.service(启动)

    正常操作
    安装nginx
    ansible web -m yum -a 'name=nginx'
    nginx的启动
    systemctl start nginx #centos7
    service nginx start #centos6
    查看nginx进程是否启动
    ps -ef|grep nginx
    ss -tnlp
    设置nginx开机自启动
    systemctl enabled nginx #centos7开机自启动
    chkconfig nginx on #centos6开机自启动
    ansible提供的service模块
    (1)启动nginx
    ansible web -m service -a 'name=nginx,static=started'
    (2)查看是否启动
    ss -tnlp
    (3)关闭nginx
    ansible web -m service -a 'name=nginx,ststic=stoped'

     

    4.cron计划任务,当时任务,周期任务

    正常操作
    每两个小时执行一次命令
    分时日月周 任务
    crontab 0 */2 * * * pwd # 每两个小时执行一次命令
    编辑计划任务
    crontab -e
    查看计划任务
    crontab -l
    ansible提供的cron模块
    (1)cron模块的参数
    day 天
    disabled 禁用
    hour 小时
    job 任务
    minute 分钟
    month 月
    name 任务名字
    weekday 周
    (2)新建一个计划任务
    ansible web -m cron -a 'minute=27 job="touch /tmp/aaaaaaa.txt" name=touchfile'
    (3)删除计划任务
    ansible web -m cron -a 'name=touchfile state=absent'
    (4)禁用计划任务(会加进去,以井号表示禁用)
    ansible web -m cron -a 'minute=30 job="touch /tmp/bbbb.txt" name=touchfile2 disabled=yes'

     

    二.用户相关模块

    1.user

    正常操作
    linux中用户的分类
    管理员 root uid 0
    普通用户
    	系统用户 不能登录系统 uid 1-999 centos7,uid 1-499 centos 6
    	登录用户 可以登录 uid 1000-65535 centos7,uid 500-65535 centos6
    
    linux中用户组的分类
    管理员组 root 0
    系统用户组 uid 1-999 centos7,uid 1-499 centos 6
    登录用户组 uid 1000-65535 centos7,uid 500-65535 centos6
    
    创建新用户
    useradd shy
    

    useradd的参数

    -d 指定用户的家目录(默认在/home下)
    -g 指定用户的组
    -G 指定用户的附加组
    -s 指定登陆后使用的shell
    -r 创建一个系统组(系统用户)
    
    useradd -r shy 创建一个系统用户,从999倒叙
    useradd -s /sbin/nologin shy #创建普通用户,从1000开始升序
    useradd -d /opt/shy #创建用户时,指定用户的家目录
    useradd -u 3000 shy2 #指定uid创建用户
    
    删除用户
    userdel alex #仅删除用户
    userdel -r alex #删除用户和加目录
    
    ansible提供的user模块
    (1)user模块的参数
    group 组
    groups 附加组
    home 家目录
    name 用户名
    password 密码
    shell 用户登录后使用shell
    system 创建系统用户
    uid 指定id创建用户
    state 状态
    remove 删除用户
    
    (2)创建一个uid为4000,不能用shell登录的,指定用户的家目录,用户的附加组
    ansible web  -m user -a 'name=ccc uid=4000 home=/opt/ccc groups=root shell=/sbin/nologin'
    
    (3)删除用户(家目录不会删除)
    ansible web -m user -a 'name=shy static=absent'
    
    (4)删除用户(家目录也删除)
    ansible web -m user -a 'name=shy static=absent remove=yes'
    

     

    2.group

    正常操作
    创建用户组
    groupadd shy
    
    删除用户组
    groupdel shy
    
    查看用户组信息
    tail -l /etc/group
    
    ansible提供的group模块
    (1)group模块的参数

    gid 组的id
    name 组名
    system 系统组
    static 状态
    
    创建一个组名为shy的系统组
    ansible web -m group -a 'name=shy system=yes'
    
    删除组
    ansible web -m group -a 'name=shy static=absent'
    
    小练习

    在web组中创建一个用户组shy1

    ansible web -m group -a 'name=shy1'
    

    在web组中创建一个用户组shy2

    ansible web -m group -a 'name=shy2'
    

    把/etc/fstab文件复制到/tmp/f

    ansible web -m copy -a 'src=/etc/fatab dest=/tmp/f'
    

    安装nginx,并设置开机自启

    ansible web -m service -a 'name=nginx enabled=yes'
    

     

    三.ansible剧本

    1.作用

    当相同的任务多次执行时,将任务内容编辑到脚本中,以后执行时,执行脚本即可,节省时间

    2.yaml编程语言

    (1)作用

    常用来写配置文件

    (2)语法表示
    字典的表示 key:value
    列表的表示 -
    

    注:后缀名.yaml或.yml

    例:

    name:shy
    age:18
    addr:heilongjiang
    hobby:
    - running
    - skiing
    - sleeping
    

    注:yaml对语法要求十分严格(:后一定要有一个空格,=前后一定不能有空格)

    (3)用yaml编写配置文件
     - hosts: web
       tasks:
       - name: creategroup
         group: name=shy10
       - name: createuser
         user: name=user10
    

    3.ansible-palybook模块 (用于执行.yml文件)

    (1)ansiblepalybook的参数

    -C, --check   # 检查,白跑,干跑
    -f FORKS, --forks=FORKS #用来做并发
    --list-hosts # 列出主机列表
    --syntax-check # 语法检查 
    
    (2)检查文件的语法
    ansible-playbook --syntax-check p1.yml
    
    (3)跑一下配置文件试试(不产生结果)
    ansible-playbook -C p1.yml 
    
    (4)真正的执行配置文件
    ansible-playbook  p1.yml 
    

    注:执行顺序,从上往下执行

    (5)特性

    幂等性:不管执行多少遍,结果都是一样的

    4.传参

    (1)语法
    - hosts: web
      tasks:
      - name: create{{ user }}
        user: name={{ user}}
    
    (2)传参方式
    方式一
    ansible-playbook -e 'user=shy11' p2.yml
    
    方式二

    修改/etc/ansible/hosts文件

    [db]
    192.168.107.132 user=shy12
    192.168.107.133 user=shy13
    
    方式三

    修改/etc/ansible/hosts文件

    [db:vars] #表示组的参数
    user=shy14
    
    方式四
    - hosts: db
      vars:
      - user: shy15
      tasks:
      - name: create{{ user }}
        user: name={{ user}}
    
    方式五
    - hosts: db
      tasks:
      - name: sum
        shell: echo 7+8|bc
        register: user
      - name: createuser
        user: name={{user.stdout}}
    
    (3)bc模块(用于计算)
    echo 3+4|bc #计算3+4
    
    (4)传参优先级
    -e > playbook > hosts
    

     

     

     

     

     

  • 相关阅读:
    android通过Canvas和Paint截取无锯齿圆形图片
    【转】mysql的cardinality异常,导致索引不可用
    mysql索引无效且sending data耗时巨大原因分析
    linux shell脚本通过参数名传递参数值
    git日志输出格式及两个版本之间差异列表
    jenkins结合ansible用shell实现自动化部署和回滚
    Linux下cp -rf总是提示覆盖的解决办法
    jenkins集成ansible注意事项Failed to connect to the host via ssh.
    ansible操作远程服务器报Error: ansible requires the stdlib json or simplejson module, neither was found!
    利用ssh-copy-id无需密码登录远程服务器
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/10476283.html
Copyright © 2011-2022 走看看