add string to end of line ansible












1














I want to create a role to do a dynamic update of my Nagios configuration when I create a new VM.



So to do that, i already created a role which add a host definition at the end of my servers.cfg Nagios file, it looks like :



- name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
blockinfile:
dest: /etc/naemon/conf.d/hosts/servers.cfg
block: |
define host {
host_name {{ Host_Name }}
alias {{ Host_Name }}.uem.lan
address {{ Host_IP }}
use modele_host,host-pnp
}
marker: ""
backup: yes


It works well.



So now I would like to be able to add my "{{ Host_Name }}" server directly at the end of lines of checks files.



Exemple : This is a check to monitore /data partition :



define service {
service_description /data partition
host_name myserv1,myserv2,myserv3,myserv4,myserv5
use srv-pnp,modele_service_disk_linux_snmp
check_command check_snmp_storage!uem_snmp!/data$!90!95
}


And I would to add my "{{ Host_Name }}" like that :



define service {
service_description /data partition
host_name myserv1,myserv2,myserv3,myserv4,myserv5,{{ Host_Name }}
use srv-pnp,modele_service_disk_linux_snmp
check_command check_snmp_storage!uem_snmp!/data$!90!95
}


Would anyone have a solution?



Thx :)










share|improve this question



























    1














    I want to create a role to do a dynamic update of my Nagios configuration when I create a new VM.



    So to do that, i already created a role which add a host definition at the end of my servers.cfg Nagios file, it looks like :



    - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
    blockinfile:
    dest: /etc/naemon/conf.d/hosts/servers.cfg
    block: |
    define host {
    host_name {{ Host_Name }}
    alias {{ Host_Name }}.uem.lan
    address {{ Host_IP }}
    use modele_host,host-pnp
    }
    marker: ""
    backup: yes


    It works well.



    So now I would like to be able to add my "{{ Host_Name }}" server directly at the end of lines of checks files.



    Exemple : This is a check to monitore /data partition :



    define service {
    service_description /data partition
    host_name myserv1,myserv2,myserv3,myserv4,myserv5
    use srv-pnp,modele_service_disk_linux_snmp
    check_command check_snmp_storage!uem_snmp!/data$!90!95
    }


    And I would to add my "{{ Host_Name }}" like that :



    define service {
    service_description /data partition
    host_name myserv1,myserv2,myserv3,myserv4,myserv5,{{ Host_Name }}
    use srv-pnp,modele_service_disk_linux_snmp
    check_command check_snmp_storage!uem_snmp!/data$!90!95
    }


    Would anyone have a solution?



    Thx :)










    share|improve this question

























      1












      1








      1







      I want to create a role to do a dynamic update of my Nagios configuration when I create a new VM.



      So to do that, i already created a role which add a host definition at the end of my servers.cfg Nagios file, it looks like :



      - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
      blockinfile:
      dest: /etc/naemon/conf.d/hosts/servers.cfg
      block: |
      define host {
      host_name {{ Host_Name }}
      alias {{ Host_Name }}.uem.lan
      address {{ Host_IP }}
      use modele_host,host-pnp
      }
      marker: ""
      backup: yes


      It works well.



      So now I would like to be able to add my "{{ Host_Name }}" server directly at the end of lines of checks files.



      Exemple : This is a check to monitore /data partition :



      define service {
      service_description /data partition
      host_name myserv1,myserv2,myserv3,myserv4,myserv5
      use srv-pnp,modele_service_disk_linux_snmp
      check_command check_snmp_storage!uem_snmp!/data$!90!95
      }


      And I would to add my "{{ Host_Name }}" like that :



      define service {
      service_description /data partition
      host_name myserv1,myserv2,myserv3,myserv4,myserv5,{{ Host_Name }}
      use srv-pnp,modele_service_disk_linux_snmp
      check_command check_snmp_storage!uem_snmp!/data$!90!95
      }


      Would anyone have a solution?



      Thx :)










      share|improve this question













      I want to create a role to do a dynamic update of my Nagios configuration when I create a new VM.



      So to do that, i already created a role which add a host definition at the end of my servers.cfg Nagios file, it looks like :



      - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
      blockinfile:
      dest: /etc/naemon/conf.d/hosts/servers.cfg
      block: |
      define host {
      host_name {{ Host_Name }}
      alias {{ Host_Name }}.uem.lan
      address {{ Host_IP }}
      use modele_host,host-pnp
      }
      marker: ""
      backup: yes


      It works well.



      So now I would like to be able to add my "{{ Host_Name }}" server directly at the end of lines of checks files.



      Exemple : This is a check to monitore /data partition :



      define service {
      service_description /data partition
      host_name myserv1,myserv2,myserv3,myserv4,myserv5
      use srv-pnp,modele_service_disk_linux_snmp
      check_command check_snmp_storage!uem_snmp!/data$!90!95
      }


      And I would to add my "{{ Host_Name }}" like that :



      define service {
      service_description /data partition
      host_name myserv1,myserv2,myserv3,myserv4,myserv5,{{ Host_Name }}
      use srv-pnp,modele_service_disk_linux_snmp
      check_command check_snmp_storage!uem_snmp!/data$!90!95
      }


      Would anyone have a solution?



      Thx :)







      ansible nagios






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 '18 at 12:20









      WrestWrest

      105




      105
























          2 Answers
          2






          active

          oldest

          votes


















          1














          My approach will be different, but it should working with Nagios 3 and 4.



          Just edit your first Ansible task a little bit:



          - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
          blockinfile:
          dest: /etc/naemon/conf.d/hosts/servers.cfg
          block: |
          define host {
          host_name {{ Host_Name }}
          alias {{ Host_Name }}.uem.lan
          address {{ Host_IP }}
          hostgroup_name anything
          use modele_host,host-pnp
          }
          marker: ""
          backup: yes


          Then replace your service definition with this:



          define service {
          service_description /data partition
          hostgroup_name anything
          use srv-pnp,modele_service_disk_linux_snmp
          check_command check_snmp_storage!uem_snmp!/data$!90!95
          }


          Everytime when you add new host via Ansible to anything hostgroup and restart/reload Nagios service you will monitor your /data partition without addition work.






          share|improve this answer





























            0














            You can give it a try with the following:



            - name: 'LINEINFILE'
            lineinfile:
            path: 'service.cfg'
            line: '{{item.line}}'
            regexp: '{{item.regexp}}'
            backrefs: True
            loop:
            - { line: '12', regexp: '(s*host_name.*),{{inventory_hostname}}(.*)' }
            - { line: '1,{{inventory_hostname}}', regexp: '(s*host_name.*)' }


            Pretty ugly, but idempotent.






            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53446620%2fadd-string-to-end-of-line-ansible%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              My approach will be different, but it should working with Nagios 3 and 4.



              Just edit your first Ansible task a little bit:



              - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
              blockinfile:
              dest: /etc/naemon/conf.d/hosts/servers.cfg
              block: |
              define host {
              host_name {{ Host_Name }}
              alias {{ Host_Name }}.uem.lan
              address {{ Host_IP }}
              hostgroup_name anything
              use modele_host,host-pnp
              }
              marker: ""
              backup: yes


              Then replace your service definition with this:



              define service {
              service_description /data partition
              hostgroup_name anything
              use srv-pnp,modele_service_disk_linux_snmp
              check_command check_snmp_storage!uem_snmp!/data$!90!95
              }


              Everytime when you add new host via Ansible to anything hostgroup and restart/reload Nagios service you will monitor your /data partition without addition work.






              share|improve this answer


























                1














                My approach will be different, but it should working with Nagios 3 and 4.



                Just edit your first Ansible task a little bit:



                - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
                blockinfile:
                dest: /etc/naemon/conf.d/hosts/servers.cfg
                block: |
                define host {
                host_name {{ Host_Name }}
                alias {{ Host_Name }}.uem.lan
                address {{ Host_IP }}
                hostgroup_name anything
                use modele_host,host-pnp
                }
                marker: ""
                backup: yes


                Then replace your service definition with this:



                define service {
                service_description /data partition
                hostgroup_name anything
                use srv-pnp,modele_service_disk_linux_snmp
                check_command check_snmp_storage!uem_snmp!/data$!90!95
                }


                Everytime when you add new host via Ansible to anything hostgroup and restart/reload Nagios service you will monitor your /data partition without addition work.






                share|improve this answer
























                  1












                  1








                  1






                  My approach will be different, but it should working with Nagios 3 and 4.



                  Just edit your first Ansible task a little bit:



                  - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
                  blockinfile:
                  dest: /etc/naemon/conf.d/hosts/servers.cfg
                  block: |
                  define host {
                  host_name {{ Host_Name }}
                  alias {{ Host_Name }}.uem.lan
                  address {{ Host_IP }}
                  hostgroup_name anything
                  use modele_host,host-pnp
                  }
                  marker: ""
                  backup: yes


                  Then replace your service definition with this:



                  define service {
                  service_description /data partition
                  hostgroup_name anything
                  use srv-pnp,modele_service_disk_linux_snmp
                  check_command check_snmp_storage!uem_snmp!/data$!90!95
                  }


                  Everytime when you add new host via Ansible to anything hostgroup and restart/reload Nagios service you will monitor your /data partition without addition work.






                  share|improve this answer












                  My approach will be different, but it should working with Nagios 3 and 4.



                  Just edit your first Ansible task a little bit:



                  - name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
                  blockinfile:
                  dest: /etc/naemon/conf.d/hosts/servers.cfg
                  block: |
                  define host {
                  host_name {{ Host_Name }}
                  alias {{ Host_Name }}.uem.lan
                  address {{ Host_IP }}
                  hostgroup_name anything
                  use modele_host,host-pnp
                  }
                  marker: ""
                  backup: yes


                  Then replace your service definition with this:



                  define service {
                  service_description /data partition
                  hostgroup_name anything
                  use srv-pnp,modele_service_disk_linux_snmp
                  check_command check_snmp_storage!uem_snmp!/data$!90!95
                  }


                  Everytime when you add new host via Ansible to anything hostgroup and restart/reload Nagios service you will monitor your /data partition without addition work.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 24 '18 at 12:28









                  RohlikRohlik

                  696618




                  696618

























                      0














                      You can give it a try with the following:



                      - name: 'LINEINFILE'
                      lineinfile:
                      path: 'service.cfg'
                      line: '{{item.line}}'
                      regexp: '{{item.regexp}}'
                      backrefs: True
                      loop:
                      - { line: '12', regexp: '(s*host_name.*),{{inventory_hostname}}(.*)' }
                      - { line: '1,{{inventory_hostname}}', regexp: '(s*host_name.*)' }


                      Pretty ugly, but idempotent.






                      share|improve this answer




























                        0














                        You can give it a try with the following:



                        - name: 'LINEINFILE'
                        lineinfile:
                        path: 'service.cfg'
                        line: '{{item.line}}'
                        regexp: '{{item.regexp}}'
                        backrefs: True
                        loop:
                        - { line: '12', regexp: '(s*host_name.*),{{inventory_hostname}}(.*)' }
                        - { line: '1,{{inventory_hostname}}', regexp: '(s*host_name.*)' }


                        Pretty ugly, but idempotent.






                        share|improve this answer


























                          0












                          0








                          0






                          You can give it a try with the following:



                          - name: 'LINEINFILE'
                          lineinfile:
                          path: 'service.cfg'
                          line: '{{item.line}}'
                          regexp: '{{item.regexp}}'
                          backrefs: True
                          loop:
                          - { line: '12', regexp: '(s*host_name.*),{{inventory_hostname}}(.*)' }
                          - { line: '1,{{inventory_hostname}}', regexp: '(s*host_name.*)' }


                          Pretty ugly, but idempotent.






                          share|improve this answer














                          You can give it a try with the following:



                          - name: 'LINEINFILE'
                          lineinfile:
                          path: 'service.cfg'
                          line: '{{item.line}}'
                          regexp: '{{item.regexp}}'
                          backrefs: True
                          loop:
                          - { line: '12', regexp: '(s*host_name.*),{{inventory_hostname}}(.*)' }
                          - { line: '1,{{inventory_hostname}}', regexp: '(s*host_name.*)' }


                          Pretty ugly, but idempotent.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Nov 23 '18 at 17:46

























                          answered Nov 23 '18 at 17:07









                          JGKJGK

                          1,1501311




                          1,1501311






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.





                              Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                              Please pay close attention to the following guidance:


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53446620%2fadd-string-to-end-of-line-ansible%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              What visual should I use to simply compare current year value vs last year in Power BI desktop

                              How to ignore python UserWarning in pytest?

                              Alexandru Averescu