zoukankan      html  css  js  c++  java
  • ansible模块之yum、pip、service、corn、user、group

    ansible相关模块

    yum

    • rpm 和yum 的区别

      rpm:全称redhat package manager (红帽包管理器) 不能解决包之间的依赖关系

      yum:可以解决依赖关系

    • yum 源配置

    • [root@localhost ~]# 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 grouplist # 查看包组信息
      yum groupinstall 包组名 # 安装包组
      
       #ansible-doc -s yum     查看yum模块的参数信息
      
      disablerepo #禁用源
      enablerepo #启用源
      name #包名
      state  install (`present' or `installed', `latest'), or remove (`absent' or `removed')
      
      ansible web -m yum -a 'name=wget' # 安装wget
      rpm -q wget    #查询已经安装的软件信息
      [root@localhost ~]# ansible web -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo'
      #将管控机上的epel源复制到被管控机上
      ansible web -m yum -a 'name=python2-pip' # 安装python2-pip
      ansible web -m yum -a 'name=wget state=absent' # 卸载软件包
      ansible web -m yum -a 'name="@Development Tools"' # 安装包组
      

    pip

    pip install 安装包
    pip freeze > a.txt 将python的环境打包到文件中
    pip install -r a.txt 安装文件中的包
    pip list 查看所有的以安装成功的包
    
    ansible web -m pip -a 'name=flask' # 安装flask模块
    

    service

    ps -ef|grep nginx #查看进程
    ss -tnlp # 查看端口信息
    systemctl start nginx # centos7启动nginx
    service nginx start  # centos6启动nginx
    systemctl enable nginx # centos7 开机自启动
    chkconfig nginx on # centos6开机自启动
    
    ansible web -m service -a 'name=nginx state=started' # 启动nginx
    ansible web -m service -a 'name=nginx state=stopped' # 关闭nginx
    ansible web -m service -a 'name=nginx state=started enabled=yes' # 设置开机自启动
    

    cron计划任务

    * * * * * job 
    分 时 日 月 周 任务
    0 */2 *  * *  job  每隔两个小时
    0 12,13 * * * job 12点和13点
    0 12-17 * * * job 12点到17点
    0 12-17/2 * * 1,3,6,0 周1,周3,周6,周7 12点到17点每隔两个小时 
    [root@localhost ~]# cat /etc/crontab 
    crontab -e # 编辑计划任务
    crontab -l # 查看计划任务
    crontab -r # 删除计划任务
    
    [root@localhost ~]# ansible-doc -s cron    #查看cron模块的参数
    day  #天
    disabled #禁用
    hour #小时
    job #任务
    minute #分钟
    month #月
    name #任务名字
    weekday #周
    state   #present or absent
    
    ansible db -m cron -a 'minute=26 job="touch /tmp/xzmly.txt" name=touchfile' # 新建一个计划任务,每小时的第26分钟在被管控机组db的/tmp下创建xzmly.txt文件
    ansible db -m cron -a 'name=touchfile state=absent' # 删除一个计划任务
    ansible db -m cron -a 'minute=26 job="touch /tmp/xzmly.txt" name=touchfile disabled=yes'  # 禁用计划任务,以#表示禁用
    
    [root@localhost ~]# crontab -l
    #Ansible: touchfile
    #56 * * * * touch /tmp/fengchong.txt
    

    用户相关: user

    用户:
    	管理员  root 0
    	普通用户
    		系统用户  不能登录  1-999 centos7 1-499 centos6
    		登录用户  可以登录  1000-65535 centos7 500-65535 centos6
    用户组:
        管理员组 root 0
        系统用户组 1-999 centos7 1-499 centos6
        登录用户组 1000-65535 centos7 500-65535 centos6
        
    [root@localhost ~]# useradd -h     #查看useradd的参数
     -d  #指定用户的家目录
     -g  #指定用户的组
     -G  #执行用户的附加组
     -s  #指定登录后使用的shell
     -r  #创建一个系统用户
     useradd -r wusir  #创建系统用户, 从999倒序
     useradd -s /sbin/nologin alexsb #创建的是普通用户,从1000开始升序
     useradd -d /opt/alexsb2 alexsb2 #创建用户时指定用户的家目录
     useradd -u 3000 alexsb6 # 创建用户并指定用户的uid
     userdel alex #删除用户
     userdel -r alexsb2 #删除用户并删除用户的家目录
      
      groupadd yuchao #创建用户组
      groupdel yuchao #删除用户组
    
    #ansible中的user模块参数
    group #组
    groups #附加组
    home #家目录
    name #用户名
    password #密码
    remove #当remove=yes时,删除用户且删除用户的家目录
    shell #用户登录后使用的shell
    system #创建一个系统用户
    uid #用来指定用户的id
    state #状态
    ansible db -m user -a 'name=wulaoshi uid=4000 home=/opt/wulaoshi groups=root shell=/sbin/nologin' #创建一个用户,并指定用户的id,用户的家目录,用户的附加组,用户的shell
    ansible db -m user -a 'name=wulaoshi state=absent' #删除用户但是不删除用户的家目录
    ansible db -m user -a 'name=wulaoshi3 state=absent remove=yes' # 删除用户并删除用户的家目录
    

    用户相关: group

    [root@localhost ~]# ansible-doc -s group
    #查看模块group的参数信息
    gid #组的id
    name #组名
    system #系统组
    state
    ansible db -m group -a 'name=wulaoshi system=yes' #创建系统组
    ansible db -m group -a 'name=wulaoshi state=absent' # 删除组
    

    小练习:以下操作均在主机列表web上进行

    1、创建一个用户组alex10

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

    2、创建一个用户wusir10

    ansible web -m user -a 'name=wusir10'
    

    3、把/etc/fstab文件复制到远程主机上/tmp/f

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

    4、安装nginx,并启动,设置开机自启动

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

    ansible 剧本

    yaml介绍:

    是一个编程语言
    文件后缀名 yaml yml
    数据对应格式:
    	字典: key: value
    	列表: [] -
    

    ansible-playbook命令格式

    执行顺序: 从上往下

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

    #命令格式:ansible-playbook [options] playbook.yml [playbook2 ...] 
    #参数:
        -C, --check   # 检查,白跑,干跑
        -f FORKS, --forks=FORKS #用来做并发
        --list-hosts # 列出主机列表
        --syntax-check # 语法检查 
        -e         #指定参数
    
    
    
    

    简单用法

    #vi p1.yml   写入如下内容:
    
    - hosts: web         #主机列表
      tasks:             #任务
      - name: creategroup     #任务名称
        group: name=alex10    #模块名:参数
      - name: cretaeuser      #任务名称
        user: name=wusir10    #模块名:参数
        
        
    #检查p1.yml语法的正确性
    [root@localhost ~]# ansible-playbook --syntax-check p1.yml
    
    playbook: p1.yml
    #执行
    [root@localhost ~]# ansible-playbook p1.yml
    
    
    
    hosts: gb
    tasks:
    - name: 第san个姑娘
      dong: 第san个姑娘
      
    

    传参

    - hosts: web
      tasks:
      - name: create{{ user }}
        user: name={{ user}}
    

    第一种方式

    ansible-playbook -e 'user=alexsb10' p2.yml
    

    第二种方式

    [db]
    192.168.107.132 user=alexsb11
    192.168.107.133 user=alexsb12
    

    第三种方式

    [db:vars] #表示组的参数
    user=alexsb13
    

    第四种方式

    - hosts: db
      vars:
      - user: alexsb14
      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}}
    

    传参方式的优先级

    -e > playbook vars > hosts文件
    
  • 相关阅读:
    DB2中的ROW_NUMBER() OVER()函数用法 转
    各个数据库分页语句汇总
    db2导出DDL
    db2数据库操作
    在myeclipse+tomcat中出现org.apache.juli.logging.LogFactory这样的错误,为什么?
    spring的事务管理有几种方式实现 (转自:http://blog.csdn.net/bopzhou/article/details/7094108)
    JAVA 判断一个字符串是不是一个合法的日期格式
    oracle添加字段 与 db2 添加字段
    ajax详细讲解
    Js 时间间隔计算(间隔天数)
  • 原文地址:https://www.cnblogs.com/fengchong/p/10408911.html
Copyright © 2011-2022 走看看