If you're looking to set the hostname for a system using Ansible then look no further. There are two modules that you can use to configure the hostname: hostname and lineinfile.
The first module, hostname, is used to set the system's hostname. Per the documentation, the module will not adjust
/etc/hosts which means you will get warning messages when you execute
sudo commands. The module is straightforward. Simple set the
name property to what you want the new hostname to be. In this case it gets set to 'webserver'.
- name: change hostname to myserver hostname: name: "webserver"
The second module, lineinfile, is used to modify the localhost line in
/etc/hosts. This module is great for either modifying a single line, or appending it to a file if it is not present. In the example below
/etc/hosts will search for a line that contains the phrase
127.0.0.1 localhost and replace it with a line that has
127.0.0.1 localhost webserver.
- name: add myself to /etc/hosts lineinfile: dest: /etc/hosts regexp: '^127\.0\.0\.1[ \t]+localhost' line: '127.0.0.1 localhost webserver' state: present