ansible模块cron、copy、user、group

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:

查询模块的参数:

1
ansible-doc -s moduleName

如 cron 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@node1 ansible] # ansible-doc -s cron
less  436
Copyright (C) 1984-2009 Mark Nudelman
 
less  comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the  file  named README  in  the  less  distribution.
Homepage: http: //www .greenwoodsoftware.com /less
- name: M a n a g e   c r o n . d   a n d   c r o n t a b   e n t r i e s .
   action:  cron
       backup                  # If set, create a backup of the crontab before it is modified. The location of the backup is returned in the `backup' variable by this mo
       cron_file               # If specified, uses this file in cron.d instead of an individual user's crontab.
       day                     # Day of the month the job should run ( 1-31, *, */2, etc )
       hour                    # Hour when the job should run ( 0-23, *, */2, etc )
       job                     # The command to execute. Required if state=present.
       minute                  # Minute when the job should run ( 0-59, *, */2, etc )
       month                   # Month of the year the job should run ( 1-12, *, */2, etc )
       name=                   # Description of a crontab entry.
       reboot                  # If the job should be run at reboot. This option is deprecated. Users should use special_time.
       special_time            # Special time specification nickname.
       state                   # Whether to ensure the job is present or absent.
       user                    # The specific user whose crontab should be modified.
       weekday                 # Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )

1、cron 模块

示例:每小时的10分钟时候执行一个脚本   默认是*

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@node1 ansible] # ansible testservers -m cron -a 'name="test cron", "minute=10" job="/bin/bash /root/test.sh"  state=present'
192.168.100.131 | success >> {
     "changed" true
     "jobs" : [
         "test cron,"
     ]
}
 
192.168.100.132 | success >> {
     "changed" true
     "jobs" : [
         "test cron,"
     ]
}
 
[root@node1 ansible] # ansible testservers -m command -a 'crontab -l'
192.168.100.131 | success | rc=0 >>
#Ansible: test cron,
10 * * * *  /bin/bash  /root/test .sh
 
192.168.100.132 | success | rc=0 >>
#Ansible: test cron,
10 * * * *  /bin/bash  /root/test .sh

删除上面的计划任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node1 ansible] # ansible testservers -m cron -a 'name="test cron", "minute=10" job="/bin/bash /root/test.sh"  state=absent'
192.168.100.131 | success >> {
     "changed" true
     "jobs" : []
}
 
192.168.100.132 | success >> {
     "changed" true
     "jobs" : []
}
 
[root@node1 ansible] # ansible testservers -m command -a 'crontab -l'
192.168.100.132 | success | rc=0 >>
 
 
192.168.100.131 | success | rc=0 >>

2、user 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@node1 ansible] # ansible-doc -s user
less  436
Copyright (C) 1984-2009 Mark Nudelman
 
less  comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the  file  named README  in  the  less  distribution.
Homepage: http: //www .greenwoodsoftware.com /less
- name: M a n a g e   u s e r   a c c o u n t s
   action: user
       append                  # If `yes', will only add groups, not set them to just the list in `groups'.
       comment                 # Optionally sets the description (aka `GECOS') of user account.
       createhome              # Unless set to `no', a home directory will be made for the user when the account is created or if the home directory does not exist.
       expires                 # An expiry time for the user in epoch, it will be ignored on platforms that do not support this. Currently supported on Linux and FreeBSD
       force                   # When used with `state=absent', behavior is as with `userdel --force'.
       generate_ssh_key        # Whether to generate a SSH key for the user in question. This will *not* overwrite an existing SSH key.
       group                   # Optionally sets the user's primary group (takes a group name).
       groups                  # Puts the user in this comma-delimited list of groups. When set to the empty string ('groups='), the user is removed from all groups exce
       home                    # Optionally set the user's home directory.
       login_class             # Optionally sets the user's login class for FreeBSD, OpenBSD and NetBSD systems.
       move_home               # If set to `yes' when used with `home=', attempt to move the user's home directory to the specified directory if it isn't there already.
       name=                   # Name of the user to create, remove or modify.
       non_unique              # Optionally when used with the -u option, this option allows to change the user ID to a non-unique value.
       password                # Optionally set the user's password to this crypted value.  See the user example in the github examples directory for what this looks lik
       remove                  # When used with `state=absent', behavior is as with `userdel --remove'.
       shell                   # Optionally set the user's shell.
       ssh_key_bits            # Optionally specify number of bits in SSH key to create.
       ssh_key_comment         # Optionally define the comment for the SSH key.
       ssh_key_file            # Optionally specify the SSH key filename. If this is a relative filename then it will be relative to the user's home directory.
       ssh_key_passphrase      # Set a passphrase for the SSH key.  If no passphrase is provided, the SSH key will default to having no passphrase.
       ssh_key_type            # Optionally specify the type of SSH key to generate. Available SSH key types will depend on implementation present on target host.
       state                   # Whether the account should exist or not, taking action if the state is different from what is stated.
       system                  # When creating an account, setting this to `yes' makes the user a system account.  This setting cannot be changed on existing users.
       uid                     # Optionally sets the `UID' of the user.
       update_password         # `always' will update passwords if they differ.  `on_create' will only set the password for newly created users.
[root@node1 ansible] #

示例:

创建一个用户testuser uid=1000  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node1 ansible] # ansible testservers -m user -a 'name=testuser uid=1000  shell=/bin/bash    home=/opt/testuser state=present'
192.168.100.131 | success >> {
     "changed" true
     "comment" ""
     "createhome" true
     "group" : 1000, 
     "home" "/opt/testuser"
     "name" "testuser"
     "shell" "/bin/bash"
     "state" "present"
     "system" false
     "uid" : 1000
}
 
192.168.100.132 | success >> {
     "changed" true
     "comment" ""
     "createhome" true
     "group" : 1000, 
     "home" "/opt/testuser"
     "name" "testuser"
     "shell" "/bin/bash"
     "state" "present"
     "system" false
     "uid" : 1000
}

删除此用户 连同用户家目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node1 ansible] # ansible testservers -m user -a 'name=testuser remove=yes state=absent'
192.168.100.131 | success >> {
     "changed" true
     "force" false
     "name" "testuser"
     "remove" true
     "state" "absent"
}
 
192.168.100.132 | success >> {
     "changed" true
     "force" false
     "name" "testuser"
     "remove" true
     "state" "absent"
}

3、group模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@node1 ansible] #  ansible-doc -s group
less  436
Copyright (C) 1984-2009 Mark Nudelman
 
less  comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the  file  named README  in  the  less  distribution.
Homepage: http: //www .greenwoodsoftware.com /less
- name: A d d   o r   r e m o  v  e   g r o u p s
   action: group
       gid                     # Optional `GID' to set for the group.
       name=                   # Name of the group to manage.
       state                   # Whether the group should be present or not on the remote host.
       system                  # If `yes', indicates that the group created is a system group.
[root@node1 ansible] #

示例:

创建一个用户组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node1 ansible] # ansible testservers -m group -a 'name=testgroup gid=1100 state=present'
192.168.100.131 | success >> {
     "changed" true
     "gid" : 1100, 
     "name" "testgroup"
     "state" "present"
     "system" false
}
 
192.168.100.132 | success >> {
     "changed" true
     "gid" : 1100, 
     "name" "testgroup"
     "state" "present"
     "system" false
}


综合示例:

在主机上创建一个testgroup组,然后创建一个testuser,并将其加入testgroup组

1
2
3
4
5
6
7
8
9
[root@node1 ansible] # ansible testservers -m group -a 'name=testgroup gid=1100 state=present'
[root@node1 ansible] # ansible testservers -m user -a 'name=testuser uid=1000 shell=/bin/bash home=/opt/testuser group=testgroup state=present'
 
[root@node1 ansible] # ansible testservers -m command -a 'id testuser'
192.168.100.132 | success | rc=0 >>
uid=1000(testuser) gid=1100(testgroup)  groups =1100(testgroup)
 
192.168.100.131 | success | rc=0 >>
uid=1000(testuser) gid=1100(testgroup)  groups =1100(testgroup)


4、copy 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node1 ansible] #  ansible-doc -s copy
less  436
Copyright (C) 1984-2009 Mark Nudelman
 
less  comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the  file  named README  in  the  less  distribution.
Homepage: http: //www .greenwoodsoftware.com /less
- name: C o p i e s   f i l e s   t o   r e m o t e   l o c a t i o n s .
   action: copy
       backup                  # Create a backup file including the timestamp information so you can get the original file back if you somehow clobbered it incorrectly.
       content                 # When used instead of 'src', sets the contents of a file directly to the specified value.
       dest=                   # Remote absolute path where the file should be copied to. If src is a directory, this must be a directory too.
       directory_mode          # When doing a recursive copy set the mode for the directories. If this is not set we will use the system defaults. The mode is only set o
       follow                  # This flag indicates that filesystem links, if they exist, should be followed.
       force                   # the default is `yes', which will replace the remote file when contents are different than the source.  If `no', the file will only be tr
       group                   # name of the group that should own the file/directory, as would be fed to `chown'
       mode                    # mode the file or directory should be, such as 0644 as would be fed to `chmod'. As of version 1.8, the mode may be specified as a symboli
       owner                   # name of the user that should own the file/directory, as would be fed to `chown'
       selevel                 # level part of the SELinux file context. This is the MLS/MCS attribute, sometimes known as the `range'. `_default' feature works as for `
       serole                  # role part of SELinux file context, `_default' feature works as for `seuser'.
       setype                  # type part of SELinux file context, `_default' feature works as for `seuser'.
       seuser                  # user part of SELinux file context. Will default to system policy, if applicable. If set to `_default', it will use the `user' portion of
       src                     # Local path to a file to copy to the remote server; can be absolute or relative. If path is a directory, it is copied recursively. In thi
       validate                # The validation command to run before copying into place.  The path to the file to validate is passed in via '%s' which must be present a
[root@node1 ansible] #

Ps:src 可以为绝对或相对路径   dest 必须为绝对路径


示例:将文件copy到测试主机:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@node1 ansible] # ansible testservers -m copy -a 'src=/root/install.log dest=/tmp/install.log owner=testuser group=testgroup'
192.168.100.131 | success >> {
     "changed" true
     "checksum" "7b3626c84bb02d12472c03d2ece878fdc4756c94"
     "dest" "/tmp/install.log"
     "gid" : 1100, 
     "group" "testgroup"
     "md5sum" "c7d8a01a077940859e773b7770d2e07e"
     "mode" "0644"
     "owner" "testuser"
     "size" : 9458, 
     "src" "/root/.ansible/tmp/ansible-tmp-1456387213.94-229503410500766/source"
     "state" "file"
     "uid" : 1000
}
 
192.168.100.132 | success >> {
     "changed" true
     "checksum" "7b3626c84bb02d12472c03d2ece878fdc4756c94"
     "dest" "/tmp/install.log"
     "gid" : 1100, 
     "group" "testgroup"
     "md5sum" "c7d8a01a077940859e773b7770d2e07e"
     "mode" "0644"
     "owner" "testuser"
     "size" : 9458, 
     "src" "/root/.ansible/tmp/ansible-tmp-1456387213.94-186055595812050/source"
     "state" "file"
     "uid" : 1000
}

示例:copy 前先备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[root@node1 ansible] # echo "test " >> /root/install.log
[root@node1 ansible] # ansible testservers -m copy -a 'src=/root/install.log dest=/tmp/install.log owner=testuser group=testgroup backup=yes'
192.168.100.132 | success >> {
     "backup_file" "/tmp/install.log.2016-02-25@16:01:26~"
     "changed" true
     "checksum" "b5da7af32ad02eb98f77395b28f281a965b4c1f5"
     "dest" "/tmp/install.log"
     "gid" : 1100, 
     "group" "testgroup"
     "md5sum" "d39956add30a18019cb5ad2381a0cd43"
     "mode" "0644"
     "owner" "testuser"
     "size" : 9464, 
     "src" "/root/.ansible/tmp/ansible-tmp-1456387285.87-128685659798967/source"
     "state" "file"
     "uid" : 1000
}
 
192.168.100.131 | success >> {
     "backup_file" "/tmp/install.log.2016-02-25@16:01:26~"
     "changed" true
     "checksum" "b5da7af32ad02eb98f77395b28f281a965b4c1f5"
     "dest" "/tmp/install.log"
     "gid" : 1100, 
     "group" "testgroup"
     "md5sum" "d39956add30a18019cb5ad2381a0cd43"
     "mode" "0644"
     "owner" "testuser"
     "size" : 9464, 
     "src" "/root/.ansible/tmp/ansible-tmp-1456387285.86-134452201968647/source"
     "state" "file"
     "uid" : 1000
}
 
[root@node1 ansible] # ansible testservers -m raw -a 'ls -lrth /tmp/install*'
192.168.100.131 | success | rc=0 >>
-rw-r--r-- 1 root     root      9.3K 2  25 16:00  /tmp/install .log.2016-02-25@16:01:26~
-rw-r--r-- 1 testuser testgroup 9.3K 2  25 16:01  /tmp/install .log
 
 
192.168.100.132 | success | rc=0 >>
-rw-r--r-- 1 root     root      9.3K 2  25 16:00  /tmp/install .log.2016-02-25@16:01:26~
-rw-r--r-- 1 testuser testgroup 9.3K 2  25 16:01  /tmp/install .log

示例:将目录copy过去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[root@node1 ansible] # tree testdir
testdir
├── a
│   ├── e
│   │   └── ansible.cfg
│   ├── f
│   └── g
├── b
│   ├── e
│   ├── f
│   └── g
└── c
     ├── ansible.cfg
     ├── e
     ├── f
     └── g
     
   
[root@node1 ansible] # ansible testservers -m copy -a 'src=/etc/ansible/testdir dest=/tmp/ owner=testuser group=testgroup backup=yes'
192.168.100.131 | success >> {
     "changed" true
     "dest" "/tmp/"
     "src" "/etc/ansible/testdir"
}
 
192.168.100.132 | success >> {
     "changed" true
     "dest" "/tmp/"
     "src" "/etc/ansible/testdir"
}
 
[root@node1 ansible] # ansible testservers -m command -a 'tree /tmp/testdir'
192.168.100.131 | success | rc=0 >>
/tmp/testdir
|-- a
|   `-- e
|       `-- ansible.cfg
|-- b
|   `-- e
|       `-- hosts
`-- c
     `-- ansible.cfg
 
5 directories, 3 files
 
192.168.100.132 | success | rc=0 >>
/tmp/testdir
|-- a
|   `-- e
|       `-- ansible.cfg
|-- b
|   `-- e
|       `-- hosts
`-- c
     `-- ansible.cfg
 
5 directories, 3 files

发现有文件的目录copy成功,空的目录没有copy过去



本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1745040

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
缓存 Shell Linux
[ansible]常用内置模块
[ansible]常用内置模块
|
5月前
|
Shell 应用服务中间件 Linux
Ansible的常用模块
Ansible的常用模块
112 6
|
5月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
45 1
|
5月前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
20天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
15天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
2月前
|
运维 应用服务中间件 网络安全
自动化运维:使用Ansible进行批量服务器配置
【9月更文挑战第35天】在现代IT基础设施管理中,高效、可扩展的自动化工具是提升工作效率的关键。本文将引导您了解如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置过程,确保一致性和可靠性的同时减少人为错误。通过实际案例,我们将展示如何编写Ansible Playbook以实现批量服务器配置,从而让您能够更加轻松地管理和维护您的服务器群。
|
18天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
41 4
|
17天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【10月更文挑战第37天】本文将深入探讨如何利用Ansible简化和自动化复杂的IT基础设施管理任务。我们将通过实际案例,展示如何用Ansible编写可重用的配置代码,以及这些代码如何帮助运维团队提高效率和减少人为错误。文章还将讨论如何构建Ansible playbook来自动部署应用、管理系统更新和执行常规维护任务。准备好深入了解这个强大的工具,让你的运维工作更加轻松吧!
33 2
|
18天前
|
运维 Devops 应用服务中间件
自动化运维的利器:Ansible实战指南
【10月更文挑战第36天】在快速迭代的数字时代,自动化运维成为提升效率、减少错误的关键。Ansible以其简洁性、易用性和强大的功能脱颖而出。本文将带你了解Ansible的核心组件,通过实际案例深入其应用,并探讨如何结合最佳实践优化你的自动化工作流程。无论你是新手还是有经验的运维人员,本指南都将为你提供宝贵的知识和技能。