<h5 dir="auto">ISSUE TYPE</h5>
<ul dir="auto">
<li>Bug Report</li>
</ul>
<h5 dir="auto">COMPONENT NAME</h5>
<p dir="auto">ansible-playbook</p>
<h5 dir="auto">ANSIBLE VERSION</h5>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ansible 2.4.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/sean/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]"><pre class="notranslate"><code class="notranslate">ansible 2.4.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/sean/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
</code></pre></div>
<h5 dir="auto">CONFIGURATION</h5>
<p dir="auto">No settings changed, confirmed with "ansible-config dump --only-changed" outputting nothing.</p>
<h5 dir="auto">OS / ENVIRONMENT</h5>
<p dir="auto">Ubuntu 16.04 managing Ubuntu 16.04</p>
<h5 dir="auto">SUMMARY</h5>
<p dir="auto">Exception when running playbook: "ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'"</p>
<p dir="auto">A coworker with a Mac host runs the same playbook without issue.</p>
<h5 dir="auto">STEPS TO REPRODUCE</h5>
<ol dir="auto">
<li>Create a playbook. I created one that just prints a debug message and nothing else.</li>
<li>Attempt to run the playbook with  <code class="notranslate">ansible-playbook --inventory-file=/path/to/inventory -vvv main.yml</code></li>
</ol>
<div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="#main.yml
- hosts: development                                                               
  become: yes                                                                      
  gather_facts: no                                                                 
                                                                                   
  tasks:                                                                           
    - name: print debug msg                                                        
      debug:                                                                       
        msg: 'Hello, World!' "><pre class="notranslate"><span class="pl-c"><span class="pl-c">#</span>main.yml</span>
- <span class="pl-ent">hosts</span>: <span class="pl-s">development                                                               </span>
  <span class="pl-ent">become</span>: <span class="pl-s">yes                                                                      </span>
  <span class="pl-ent">gather_facts</span>: <span class="pl-s">no                                                                 </span>
                                                                                   
  <span class="pl-ent">tasks</span>:                                                                           
    - <span class="pl-ent">name</span>: <span class="pl-s">print debug msg                                                        </span>
      <span class="pl-ent">debug</span>:                                                                       
        <span class="pl-ent">msg</span>: <span class="pl-s"><span class="pl-pds">'</span>Hello, World!<span class="pl-pds">'</span></span> </pre></div>
<h5 dir="auto">EXPECTED RESULTS</h5>
<p dir="auto">The playbook would run normally.</p>
<h5 dir="auto">ACTUAL RESULTS</h5>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ansible-playbook 2.4.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/sean/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
Using /etc/ansible/ansible.cfg as config file
Parsed /path/to/inventory inventory source with ini plugin
ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'
the full traceback was:

Traceback (most recent call last):
  File &quot;/usr/bin/ansible-playbook&quot;, line 106, in &lt;module&gt;
    exit_code = cli.run()
  File &quot;/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py&quot;, line 130, in run
    results = pbex.run()
  File &quot;/usr/lib/python2.7/dist-packages/ansible/executor/playbook_executor.py&quot;, line 90, in run
    self._tqm.load_callbacks()
  File &quot;/usr/lib/python2.7/dist-packages/ansible/executor/task_queue_manager.py&quot;, line 203, in load_callbacks
    callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again."><pre class="notranslate"><code class="notranslate">ansible-playbook 2.4.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/sean/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
Using /etc/ansible/ansible.cfg as config file
Parsed /path/to/inventory inventory source with ini plugin
ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'
the full traceback was:

Traceback (most recent call last):
  File "/usr/bin/ansible-playbook", line 106, in &lt;module&gt;
    exit_code = cli.run()
  File "/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py", line 130, in run
    results = pbex.run()
  File "/usr/lib/python2.7/dist-packages/ansible/executor/playbook_executor.py", line 90, in run
    self._tqm.load_callbacks()
  File "/usr/lib/python2.7/dist-packages/ansible/executor/task_queue_manager.py", line 203, in load_callbacks
    callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
</code></pre></div>
<h5 dir="auto">ISSUE TYPE</h5>

<ul dir="auto">
<li>Bug Report</li>
</ul>
<h5 dir="auto">COMPONENT NAME</h5>

<ul dir="auto">
<li>CallBackModule</li>
</ul>
<h5 dir="auto">ANSIBLE VERSION</h5>

<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ ansible --version
ansible 2.4.0.0
  config file = /Users/&lt;REDACTED&gt;/ansible.cfg
  configured module search path = [u'/Users/&lt;REDACTED&gt;/ansible-lib/library']
  ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.13 (default, Aug  7 2017, 22:02:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.28.1)]"><pre class="notranslate"><code class="notranslate">$ ansible --version
ansible 2.4.0.0
  config file = /Users/&lt;REDACTED&gt;/ansible.cfg
  configured module search path = [u'/Users/&lt;REDACTED&gt;/ansible-lib/library']
  ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.13 (default, Aug  7 2017, 22:02:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.28.1)]
</code></pre></div>
<h5 dir="auto">CONFIGURATION</h5>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ANSIBLE_SSH_CONTROL_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = %(directory)s/%%h-%%r
ANSIBLE_SSH_PIPELINING(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
DEFAULT_ACTION_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/action_plugins']
DEFAULT_CALLBACK_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/callback_plugins']
DEFAULT_CALLBACK_WHITELIST(/Users/&lt;REDACTED&gt;/ansible.cfg) = ['log_plays_capture', 'mail', 'actionable', 'skippy', 'task_timer', 'version_recorder']
DEFAULT_CONNECTION_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/connection_plugins']
DEFAULT_FILTER_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/filter']
DEFAULT_HASH_BEHAVIOUR(/Users/&lt;REDACTED&gt;/ansible.cfg) = merge
DEFAULT_LOOKUP_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/lookup_plugins']
DEFAULT_MODULE_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/library']
DEFAULT_REMOTE_TMP(/Users/&lt;REDACTED&gt;/ansible.cfg) = $HOME/.ansible/tmp
DEFAULT_STDOUT_CALLBACK(/Users/&lt;REDACTED&gt;/ansible.cfg) = skippy
DEFAULT_TRANSPORT(/Users/&lt;REDACTED&gt;/ansible.cfg) = smart
DEPRECATION_WARNINGS(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
DISPLAY_SKIPPED_HOSTS(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
HOST_KEY_CHECKING(/Users/&lt;REDACTED&gt;/ansible.cfg) = False"><pre class="notranslate"><code class="notranslate">ANSIBLE_SSH_CONTROL_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = %(directory)s/%%h-%%r
ANSIBLE_SSH_PIPELINING(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
DEFAULT_ACTION_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/action_plugins']
DEFAULT_CALLBACK_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/callback_plugins']
DEFAULT_CALLBACK_WHITELIST(/Users/&lt;REDACTED&gt;/ansible.cfg) = ['log_plays_capture', 'mail', 'actionable', 'skippy', 'task_timer', 'version_recorder']
DEFAULT_CONNECTION_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/connection_plugins']
DEFAULT_FILTER_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/filter']
DEFAULT_HASH_BEHAVIOUR(/Users/&lt;REDACTED&gt;/ansible.cfg) = merge
DEFAULT_LOOKUP_PLUGIN_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/lookup_plugins']
DEFAULT_MODULE_PATH(/Users/&lt;REDACTED&gt;/ansible.cfg) = [u'/Users/&lt;REDACTED&gt;/ansible-lib/library']
DEFAULT_REMOTE_TMP(/Users/&lt;REDACTED&gt;/ansible.cfg) = $HOME/.ansible/tmp
DEFAULT_STDOUT_CALLBACK(/Users/&lt;REDACTED&gt;/ansible.cfg) = skippy
DEFAULT_TRANSPORT(/Users/&lt;REDACTED&gt;/ansible.cfg) = smart
DEPRECATION_WARNINGS(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
DISPLAY_SKIPPED_HOSTS(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
HOST_KEY_CHECKING(/Users/&lt;REDACTED&gt;/ansible.cfg) = False
</code></pre></div>
<h5 dir="auto">OS / ENVIRONMENT</h5>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13
BuildVersion:	17A362a"><pre class="notranslate"><code class="notranslate">$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13
BuildVersion:	17A362a
</code></pre></div>
<h5 dir="auto">SUMMARY</h5>
<p dir="auto">After upgrading from Ansible 2.3.2 to Ansible 2.4.0.0 (via pip2), We have a bunch of custom libraries, plugins (action, filter and lookup); I see exceptions in playbook runs.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="the full traceback was:

Traceback (most recent call last):
  File &quot;/usr/local/bin/ansible-playbook&quot;, line 106, in &lt;module&gt;
    exit_code = cli.run()
  File &quot;/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py&quot;, line 130, in run
    results = pbex.run()
  File &quot;/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py&quot;, line 90, in run
    self._tqm.load_callbacks()
  File &quot;/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py&quot;, line 203, in load_callbacks
    callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'
"><pre class="notranslate"><code class="notranslate">the full traceback was:

Traceback (most recent call last):
  File "/usr/local/bin/ansible-playbook", line 106, in &lt;module&gt;
    exit_code = cli.run()
  File "/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py", line 130, in run
    results = pbex.run()
  File "/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py", line 90, in run
    self._tqm.load_callbacks()
  File "/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py", line 203, in load_callbacks
    callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
AttributeError: 'CallbackModule' object has no attribute 'set_options'

</code></pre></div>
<h5 dir="auto">ACTUAL RESULTS</h5>


<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="  $ ansible-playbook -i env/qa -u &lt;REDACTED&gt; provision.yml --extra-vars=&quot;state=reloaded release=e4&quot; --ask-become-pass --become --become-user=&lt;REDACTED&gt; --vault-password-file=~/.vault_pass --limit=&lt;REDACTED&gt; -vvvv
  ansible-playbook 2.4.0.0
    config file = /Users/&lt;REDACTED&gt;/ansible.cfg
    configured module search path = [u'/Users/&lt;REDACTED&gt;/ansible-lib/library']
    ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
    executable location = /usr/local/bin/ansible-playbook
    python version = 2.7.13 (default, Aug  7 2017, 22:02:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.28.1)]
  Using /Users/&lt;REDACTED&gt;/ansible.cfg as config file
  SUDO password:
  setting up inventory plugins
  Parsed /Users/&lt;REDACTED&gt;/env/qa/inventory inventory source with ini plugin
  Loading callback plugin skippy of type stdout, v2.0 from /usr/local/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
  ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'
  the full traceback was:

  Traceback (most recent call last):
    File &quot;/usr/local/bin/ansible-playbook&quot;, line 106, in &lt;module&gt;
      exit_code = cli.run()
    File &quot;/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py&quot;, line 130, in run
      results = pbex.run()
    File &quot;/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py&quot;, line 90, in run
      self._tqm.load_callbacks()
    File &quot;/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py&quot;, line 203, in load_callbacks
      callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
  AttributeError: 'CallbackModule' object has no attribute 'set_options'"><pre class="notranslate"><code class="notranslate">  $ ansible-playbook -i env/qa -u &lt;REDACTED&gt; provision.yml --extra-vars="state=reloaded release=e4" --ask-become-pass --become --become-user=&lt;REDACTED&gt; --vault-password-file=~/.vault_pass --limit=&lt;REDACTED&gt; -vvvv
  ansible-playbook 2.4.0.0
    config file = /Users/&lt;REDACTED&gt;/ansible.cfg
    configured module search path = [u'/Users/&lt;REDACTED&gt;/ansible-lib/library']
    ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
    executable location = /usr/local/bin/ansible-playbook
    python version = 2.7.13 (default, Aug  7 2017, 22:02:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.28.1)]
  Using /Users/&lt;REDACTED&gt;/ansible.cfg as config file
  SUDO password:
  setting up inventory plugins
  Parsed /Users/&lt;REDACTED&gt;/env/qa/inventory inventory source with ini plugin
  Loading callback plugin skippy of type stdout, v2.0 from /usr/local/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc
  ERROR! Unexpected Exception, this is probably a bug: 'CallbackModule' object has no attribute 'set_options'
  the full traceback was:

  Traceback (most recent call last):
    File "/usr/local/bin/ansible-playbook", line 106, in &lt;module&gt;
      exit_code = cli.run()
    File "/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py", line 130, in run
      results = pbex.run()
    File "/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py", line 90, in run
      self._tqm.load_callbacks()
    File "/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py", line 203, in load_callbacks
      callback_obj .set_options(C.config.get_plugin_options('callback', callback_plugin._load_name))
  AttributeError: 'CallbackModule' object has no attribute 'set_options'
</code></pre></div>