ansible自己练习,有点乱

一片比较简单但是比较完成的ansible介绍文档,大家可以看一下http://www.mamicode.com/info-detail-1428476.html

 

配置被管理主机的分组名称,IP地址,端口号,秘钥文件,ssh连接用户

[testhost]        //分组名称

10.200.7.59:9999  //IP地址,端口号,  ansible_ssh_private_key_file=/etc/ansible/sshkey/common/10.200.7.59/sysadmin ansible_ssh_user=sysadmin //秘钥文件,ssh连接用户

  

模块synchronize 从被控制主机拉取文件到控制机,  -l  --limit限制,只管理主机

ansible hostIP-m synchronize -a ‘mode=pull src=/tmp/a dest=/root/‘  -l  1.1.1.1

 

使用定时模块

ansible testhost -m cron -a "name='test_cron' job='/bin/touch /tmp/test.txt'  hour='1,5,10' weekday=1"

 

Ansible-playbook

YAML最关键的部分为列表 字段 和映射

列表的所有元素均使用“-”打头,例如:
# A list of tasty fruits
- Apple
- Orange

一定要做好缩进,通过空格进行排序,排列整齐的认为是同一级别的

 

参数交互

ansible-playbooke33_var_in_command.yml --extra-vars "{'hosts':'vm-rhel7-1', 'user':'root'}"

 

gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;

创建用户

- name: create_user

  hosts: testhost

  user: root

  gather_facts: false

  vars:

    - user: "msiyuetian"

 

0.user模块

  tasks:

    - name: create user

      user: name="{{ user }}"

1.debug模块

debug模块使用很简单.它具有两个参数,msg和fail.msg就是打印出来的信息,而当fail参数设置为yes时,会发送失败通知给ansible,然后ansible会停止运行任务.

- name: debug

  Debug:

    Msg: {{ message.stdout }}

2.check模式

ansible还提供了check模式和diff模式.只需要执行playbook时添加参数–check和–diff.check模式运行时,ansible不会真正控制远程机器发生变更.这能够让你获得这次playbook任务中,将会发生changed事件的列表.


3.设置使用系统变量

- name:设置ROOT用户的SU密码

      set_fact:

        ansible_become_pass:abc


4yaml中包含另一个yaml表格

[root@testA httpd]# cat httpd.yaml

- name: conf

  remote_user: root

  hosts: a

  tasks:

    include: tasks/main.yaml

  handlers:

    include: handlers/main.yaml

 

5.service 模块及定义handlers(内容和正常书写一直)

[root@testA handlers]# vim main.yaml

内容如下:

  - name: restart httpd

    service: name=httpd enabled=yes state=restarted

 

6.tags模块

在playbook中 其中一个选项 -t,-t表示可以执行某些特定标签对应的tasks

如果第二次执行的时候就没有必要去重新yum安装

ansible-playbook httpd.yaml -t conf

  - name: conf file

    copy: src=/opt/test/httpd/httpd.conf dest=/etc/httpd/conf/httpd.conf

    tags: conf

notify: restart httpd

    

7.定义yum模块的使用,并且使用条件when,即 命令为yum

  - name: install     #定义第一个任务名

    yum: name=httpd state=present

      when: ansible_pkg_mgr == "yum"

       when: ansible_os_family == "RedHat"

 

8.notigy 和 handlers模块方法的使用

    - name: test copy

      copy: src=/etc/passwd dest=/tmp/handlers.txt

      notify: test handlers

  handlers:

    - name: test handlers

      shell: echo "msiyuetian.blog.51cto.com" >> /tmp/handlers.txt

说明:只有 copy 模块真正执行后,才会去调用下面的 handlers 相关的操作,追加内容。也就是说如果 src 和 dest 内容是一样的,并不会去执行 handlers 里面的 shell 相关命令。所以这种比较适合配置文件发生更改后,需要重启服务的操作。我理解notify是在做比较。

 

9.Ansible-playbook使用sudo

- hosts: webnodes

  tasks:

    - name: test ping connection:

    remote_user: test

    sudo: yes

 

10.参数的使用

    - name: change mode for files

      file: path=/tmp/{{ item }} mode=600 owner=root group=root

      with_items:

        - 1.txt

        - 2.txt

这里变量必须是以{{item}}进行标记,而调用变量必须是with_items:进行赋值

 

补充:在使用with_items的时候还可以使用hashes

user:name={{item,name}} state=present groups={{item.group}}

with_items:

  -{name:'test1',gourp: 'wheel'}

  -{name:'test2',gourp: 'root'}

 

11.Register模块保存结果

   - name: Get /tmp info

     file: dest=/tmp state=directory

     register: tmp   //获取源文件的一些属性信息

   - name: Set mode on /var/tmp

     file: dest=/tmp/subtmp mode={{ tmp.mode }} state=directory  // 创建文件夹

 

12.prompt交互方式获取变量值

- hosts: server

  vars_prompt:

    - name: web

      prompt: 'Please input the web server:'

      private: no

  tasks:

    - name: concent of the file test

      template: src=/root/test dest=/tmp/test

查看/root/test文件

 

在一个主机上面只执行一次一个任务.”run_once”来实现:run_once: true

在本地运行程序:delegate_to:localhost  

 

 

 

 

 

 

 

 

回答: 你可以使用ansible-playbook命令来运行项目练习中的剧本。根据引用\[1\]中的描述,你可以使用以下命令来运行剧本: ansible-playbook /home/devops/ansible/packages.yml 这个剧本将在dev、prod和test主机组中安装php和mariadb软件包,并在dev主机组中安装Development Tools包组,最后升级dev主机组中的所有软件包。另外,根据引用\[2\]中的描述,你还可以使用以下命令来运行另一个剧本: ansible-playbook /home/devops/ansible/internet.yml 这个剧本包含两个任务,第一个任务是在serverb.lab.example.com上安装firewalld、httpd、mariadb-server、php和php-mysqlnd软件包,并确保firewalld服务处于enabled和running状态,并允许访问httpd服务,同时确保httpd和Maria服务处于enabled和running状态。第二个任务是利用uri模块从控制节点测试serverb上运行web服务,检查返回状态代码200。所以,你可以使用以上命令来运行这两个剧本。 #### 引用[.reference_title] - *1* [ansible练习【2】](https://blog.csdn.net/JohnnyG2000/article/details/124188654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ansible-playbook(剧本)练习题](https://blog.csdn.net/weixin_56105279/article/details/128041261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ansible playbook练习](https://blog.csdn.net/m0_53122419/article/details/121535493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值