ansible - 转移文件和更改所有权

时间:2015-08-03 08:16:25

标签: ansible ansible-playbook adhoc

我是Ansible的新手。以下是我的要求,

  1. 将文件(.tar.gz)从/ tmp下的一台主机传输到多台计算机(38多个节点)作为user1
  2. 以user2身份登录每台计算机,并使用sudo su - (使用密码)
  3. 切换到root用户
  4. 将其解压缩到另一个目录(/ opt / monitor)
  5. 更改文件中的配置(/ opt / monitor / etc / config - > host =)
  6. 在/opt/monitor/init.d
  7. 下启动该过程

    为此,我应该使用playbooks还是ad-hoc命令? 我很乐意在ansible中使用ad-hoc模式,因为我害怕Playbooks。

    提前致谢

2 个答案:

答案 0 :(得分:1)

您必须编写几个ad hoc命令才能完成此任务。我认为没有任何理由不在这里使用剧本。你会想要learn about playbooks,但是学习它比ad hoc命令要多得多。 sudo部分由您使用-b选项“成为”使用sudo来为您处理。 Ansible负责通过ssh登录。

您要使用的操作在此类安装中很常见,您可以从源代码安装内容,yumget_urlunarchive,{ {1}}。举个例子,这是一个非常类似于你需要的过程,演示在RedHat系列系统上从源代码安装redis:

service

您可以在- name: install yum dependencies for redis yum: name=jemalloc-devel ... state=present - name: get redis from file server get_url: url={{s3uri}}/common/{{redis}}.tar.gz dest={{tmp}} - name: extract redis unarchive: copy=no src={{tmp}}/{{redis}}.tar.gz dest={{tmp}} creates={{tmp}}/{{redis}} - name: build redis command: chdir={{tmp}}/{{redis}} creates=/usr/local/bin/redis-server make install - name: copy custom systemd redis.service copy: src=myredis.service dest=/usr/lib/systemd/system/ # and logrotate, redis.conf, etc - name: enable myredis service service: name=myredis state=started enabled=yes 文件中定义自定义变量,例如tmpredis。您还需要一个global_vars/all.yaml文件来定义您的主机和角色。

你可以用以下内容调用剧本:

site.yaml

这可以像在一个节点上一样轻松地在38个节点上运行。

答案 1 :(得分:1)

你想要一本剧本来做这件事。在最简单的层面上,既然你提到了拆包,它可能看起来像这样:

else